This is a translation of the original English documentation page. Help us make it better.

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