| 1 | #!/bin/sh |
| 2 | # SPDX-License-Identifier: GPL-3.0-or-later |
| 3 | # |
| 4 | # This script downloads and installs IBM MQ client libraries |
| 5 | # required for the ibm.d.plugin MQ PCF collector to work. |
| 6 | # |
| 7 | # Note: Database collectors (AS/400, DB2) now use unixODBC exclusively |
| 8 | # and do not require IBM DB2 client libraries. |
| 9 | |
| 10 | set -e |
| 11 | |
| 12 | MQ_CLIENT_URL="https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqdev/redist/9.4.1.0-IBM-MQC-Redist-LinuxX64.tar.gz" |
| 13 | |
| 14 | # Set installation directory from CMake |
| 15 | BASE_DIR="@NETDATA_RUNTIME_PREFIX@/usr/lib/netdata" |
| 16 | |
| 17 | # Allow override via command line |
| 18 | if [ -n "$1" ]; then |
| 19 | BASE_DIR="$1" |
| 20 | echo "Using specified installation directory: $BASE_DIR" |
| 21 | else |
| 22 | echo "Using Netdata installation directory: $BASE_DIR" |
| 23 | fi |
| 24 | |
| 25 | MQ_CLIENT_DIR="${BASE_DIR}/ibm-mqclient" |
| 26 | |
| 27 | # Check if already installed |
| 28 | if [ -f "$MQ_CLIENT_DIR/lib64/libmqm.so" ]; then |
| 29 | echo "IBM MQ client libraries are already installed" |
| 30 | echo " Path: $MQ_CLIENT_DIR" |
| 31 | exit 0 |
| 32 | fi |
| 33 | |
| 34 | # Check for root permissions |
| 35 | if [ "$(id -u)" -ne 0 ]; then |
| 36 | echo "ERROR: This script must be run as root" |
| 37 | exit 1 |
| 38 | fi |
| 39 | |
| 40 | # Install MQ libraries |
| 41 | echo "Installing IBM MQ client libraries to: $MQ_CLIENT_DIR" |
| 42 | mkdir -p "$MQ_CLIENT_DIR" |
| 43 | cd "$MQ_CLIENT_DIR" |
| 44 | |
| 45 | # Download |
| 46 | echo "Downloading IBM MQ client libraries..." |
| 47 | if command -v wget >/dev/null 2>&1; then |
| 48 | wget -q --show-progress -O mqclient.tar.gz "$MQ_CLIENT_URL" || { |
| 49 | echo "ERROR: Failed to download IBM MQ client libraries" |
| 50 | exit 1 |
| 51 | } |
| 52 | elif command -v curl >/dev/null 2>&1; then |
| 53 | curl -# -L -o mqclient.tar.gz "$MQ_CLIENT_URL" || { |
| 54 | echo "ERROR: Failed to download IBM MQ client libraries" |
| 55 | exit 1 |
| 56 | } |
| 57 | else |
| 58 | echo "ERROR: Neither wget nor curl found. Cannot download IBM libraries." |
| 59 | echo "Please install wget or curl and try again." |
| 60 | exit 1 |
| 61 | fi |
| 62 | |
| 63 | # Extract |
| 64 | echo "Extracting IBM MQ client libraries..." |
| 65 | tar -xzf mqclient.tar.gz || { |
| 66 | echo "ERROR: Failed to extract IBM MQ client libraries" |
| 67 | rm -f mqclient.tar.gz |
| 68 | exit 1 |
| 69 | } |
| 70 | rm -f mqclient.tar.gz |
| 71 | |
| 72 | # Set proper permissions |
| 73 | chown -R root:root "$MQ_CLIENT_DIR" |
| 74 | chmod -R 755 "$MQ_CLIENT_DIR" |
| 75 | echo "IBM MQ client libraries installed successfully." |
| 76 | echo " Installation path: $MQ_CLIENT_DIR" |
| 77 | echo " Headers: $MQ_CLIENT_DIR/inc" |
| 78 | echo " Libraries: $MQ_CLIENT_DIR/lib64" |
| 79 | echo " Binaries: $MQ_CLIENT_DIR/bin" |
| 80 | |
| 81 | echo "" |
| 82 | echo "==========================================" |
| 83 | echo "IBM MQ Client Libraries Installation Summary" |
| 84 | echo "==========================================" |
| 85 | echo "" |
| 86 | echo "Base installation directory: $BASE_DIR" |
| 87 | echo "" |
| 88 | if [ -f "$MQ_CLIENT_DIR/lib64/libmqm.so" ]; then |
| 89 | echo "MQ Client Libraries:" |
| 90 | echo " Path: $MQ_CLIENT_DIR" |
| 91 | echo " Headers: $MQ_CLIENT_DIR/inc" |
| 92 | echo " Libraries: $MQ_CLIENT_DIR/lib64" |
| 93 | fi |
| 94 | echo "" |
| 95 | echo "The ibm.d.plugin should now be able to connect to:" |
| 96 | echo " - IBM MQ queue managers" |
| 97 | echo " - IBM WebSphere Application Server (via MQ)" |
| 98 | echo "" |
| 99 | echo "For database monitoring (DB2, AS/400), install unixODBC and appropriate ODBC drivers:" |
| 100 | echo " - unixODBC: apt-get install unixodbc (Ubuntu) or yum install unixODBC (RHEL)" |
| 101 | echo " - IBM DB2 ODBC Driver: Download from IBM Data Server Driver Package" |
| 102 | echo " - IBM i Access ODBC Driver: Download from IBM i Access Client Solutions" |
| 103 | echo "" |
| 104 | echo "Note: You may need to restart the Netdata service for the changes to take effect:" |
| 105 | echo " systemctl restart netdata # For systemd systems" |
| 106 | echo " /etc/init.d/netdata restart # For SysV init systems" |