- Construire l'agent Zabbix sur macOS
- Aperçu
- Conditions préalables
- Construire des fichiers binaires d'agent avec des bibliothèques partagées
- Construire des binaires d'agent avec des bibliothèques statiques sans TLS
- Construire des binaires d'agent avec des bibliothèques statiques avec OpenSSL
- Construire des binaires d'agent avec des bibliothèques statiques avec GnuTLS
Construire l'agent Zabbix sur macOS
Aperçu
Cette section montre comment créer des binaires d'agent Zabbix macOS à partir de sources avec ou sans TLS.
Conditions préalables
Vous aurez besoin des outils de développement en ligne de commande (Xcode n'est pas requis), Automake, pkg-config et PCRE (v8.x) ou PCRE2 (v10.x). Si vous souhaitez créer des binaires d'agent avec TLS, vous aurez également besoin d'OpenSSL ou de GnuTLS.
Pour installer Automake et pkg-config, vous aurez besoin d'un gestionnaire de paquets Homebrew disponible à l'adresse https://brew.sh/. Pour l'installer, ouvrez le terminal et exécutez la commande suivante :
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Installez ensuite Automake et pkg-config :
$ brew install automake
$ brew install pkg-config
La préparation des bibliothèques PCRE, OpenSSL et GnuTLS dépend de la manière dont elles vont être liées à l'agent.
Si vous avez l'intention d'exécuter des fichiers binaires d'agent sur une machine macOS qui possède déjà ces bibliothèques, vous pouvez utiliser des bibliothèques précompilées fournies par Homebrew. Ce sont généralement des machines macOS qui utilisent Homebrew pour créer des binaires d'agent Zabbix ou à d'autres fins.
Si les fichiers binaires de l'agent sont utilisés sur des machines macOS qui ne disposent pas de la version partagée des bibliothèques, vous devez compiler les bibliothèques statiques à partir des sources et lier l'agent Zabbix avec elles.
Construire des fichiers binaires d'agent avec des bibliothèques partagées
Installez PCRE2 (remplacez pcre2 par pcre dans les commandes ci-dessous, si nécessaire) :
$ brew install pcre2
Lors de la compilation avec TLS, installez OpenSSL et/ou GnuTLS :
$ brew install openssl
$ brew install gnutls
Téléchargez les sources de Zabbix :
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
Construire l'agent sans TLS :
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
$ make
$ make install
Construire l'agent avec OpenSSL :
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
$ make
$ make install
Construire l'agent avec GnuTLS :
$ cd zabbix-source/
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-gnutls=/usr/local/opt/gnutls
$ make
$ make install
Construire des binaires d'agent avec des bibliothèques statiques sans TLS
Supposons que les bibliothèques statiques PCRE seront installées dans$HOME/static-libs. Nous utiliserons PCRE2 10.39.
$ PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
Téléchargez et créez PCRE avec la prise en charge des propriétés Unicode :
$ mkdir static-libs-source
$ cd static-libs-source
$ curl --remote-name https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.gz
$ tar xf pcre2-10.39.tar.gz
$ cd pcre2-10.39
$ ./configure --prefix="$PCRE_PREFIX" --disable-shared --enable-static --enable-unicode-properties
$ make
$ make check
$ make install
Téléchargez la source Zabbix et construisez l'agent :
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre2="$PCRE_PREFIX"
$ make
$ make install
Construire des binaires d'agent avec des bibliothèques statiques avec OpenSSL
Lors de la construction d'OpenSSL, il est recommandé d'exécuter make test après une construction réussie. Même si la construction a réussi, les tests échouent parfois. Si tel est le cas, les problèmes doivent être recherchés et résolus avant de continuer.
Supposons que les bibliothèques statiques PCRE et OpenSSL seront installées dans $HOME/static-libs. Nous utiliserons PCRE2 10.39 et OpenSSL 1.1.1a.
$ PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
$ OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"
Construisons des bibliothèques statiques dans static-libs-source :
$ mkdir static-libs-source
$ cd static-libs-source
Téléchargez et créez PCRE avec la prise en charge des propriétés Unicode :
$ curl --remote-name https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.gz
$ tar xf pcre2-10.39.tar.gz
$ cd pcre2-10.39
$ ./configure --prefix="$PCRE_PREFIX" --disable-shared --enable-static --enable-unicode-properties
$ make
$ make check
$ make install
$ cd ..
Téléchargez et créez OpenSSL :
$ curl --remote-name https://www.openssl.org/source/openssl-1.1.1a.tar.gz
$ tar xf openssl-1.1.1a.tar.gz
$ cd openssl-1.1.1a
$ ./Configure --prefix="$OPENSSL_PREFIX" --openssldir="$OPENSSL_PREFIX" --api=1.1.0 no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method darwin64-x86_64-cc
$ make
$ make test
$ make install_sw
$ cd ..
Téléchargez la source Zabbix et construisez l'agent :
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre2="$PCRE_PREFIX" --with-openssl="$OPENSSL_PREFIX"
$ make
$ make install
Construire des binaires d'agent avec des bibliothèques statiques avec GnuTLS
GnuTLS dépend du backend de chiffrement Nettle et de la bibliothèque arithmétique GMP. Au lieu d'utiliser la bibliothèque GMP complète, ce guide utilisera mini-gmp qui est inclus dans Nettle.
Lors de la construction de GnuTLS et de Nettle, il est recommandé d'exécuter make check après une construction réussie. Même si la construction a réussi, les tests échouent parfois. Si tel est le cas, les problèmes doivent être recherchés et résolus avant de continuer.
Supposons que les bibliothèques statiques PCRE, Nettle et GnuTLS seront installées dans $HOME/static-libs. Nous utiliserons PCRE2 10.39, Nettle 3.4.1 et GnuTLS 3.6.5.
$ PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
$ NETTLE_PREFIX="$HOME/static-libs/nettle-3.4.1"
$ GNUTLS_PREFIX="$HOME/static-libs/gnutls-3.6.5"
Construisons des bibliothèques statiques dans static-libs-source :
$ mkdir static-libs-source
$ cd static-libs-source
Téléchargez et compilez Nettle :
$ curl --remote-name https://ftp.gnu.org/gnu/nettle/nettle-3.4.1.tar.gz
$ tar xf nettle-3.4.1.tar.gz
$ cd nettle-3.4.1
$ ./configure --prefix="$NETTLE_PREFIX" --enable-static --disable-shared --disable-documentation --disable-assembler --enable-x86-aesni --enable-mini-gmp
$ make
$ make check
$ make install
$ cd ..
Téléchargez et compilez GnuTLS :
$ curl --remote-name https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.5.tar.xz
$ tar xf gnutls-3.6.5.tar.xz
$ cd gnutls-3.6.5
$ PKG_CONFIG_PATH="$NETTLE_PREFIX/lib/pkgconfig" ./configure --prefix="$GNUTLS_PREFIX" --enable-static --disable-shared --disable-guile --disable-doc --disable-tools --disable-libdane --without-idn --without-p11-kit --without-tpm --with-included-libtasn1 --with-included-unistring --with-nettle-mini
$ make
$ make check
$ make install
$ cd ..
Téléchargez la source Zabbix et compilez l'agent:
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ ./bootstrap.sh
$ CFLAGS="-Wno-unused-command-line-argument -framework Foundation -framework Security" \
> LIBS="-lgnutls -lhogweed -lnettle" \
> LDFLAGS="-L$GNUTLS_PREFIX/lib -L$NETTLE_PREFIX/lib" \
> ./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-libpcre2="$PCRE_PREFIX" --with-gnutls="$GNUTLS_PREFIX"
$ make
$ make install