Compilazione di Zabbix agent su macOS

Panoramica

Questa sezione mostra come creare i binari dell'agente macOS Zabbix da sorgenti con o senza TLS.

Prerequisiti

Saranno necessari gli strumenti di sviluppo da riga di comando (Xcode non è richiesto), Automake, pkg-config e PCRE (v8.x) oppure PCRE2 (v10.x). Se si desidera compilare i binari dell'agent con TLS, saranno necessari anche OpenSSL oppure GnuTLS.

Per installare Automake e pkg-config, sarà necessario il gestore di pacchetti Homebrew da https://brew.sh/. Per installarlo, aprire il terminale ed eseguire il comando seguente:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Quindi installare Automake e pkg-config:

brew install automake
brew install pkg-config

La preparazione delle librerie PCRE, OpenSSL e GnuTLS dipende dal modo in cui verranno collegate all'agent.

Se si intende eseguire i binari dell'agent su una macchina macOS che dispone già di queste librerie, è possibile utilizzare le librerie precompilate fornite da Homebrew. In genere si tratta di macchine macOS che utilizzano Homebrew per compilare i binari dell'agent Zabbix o per altri scopi.

Se i binari dell'agent verranno utilizzati su macchine macOS che non dispongono della versione condivisa delle librerie, sarà necessario compilare librerie statiche dai sorgenti e collegare a esse l'agent Zabbix.

Compilazione dei binari dell'agent con librerie condivise

Installare PCRE2 (sostituire pcre2 con pcre nei comandi seguenti, se necessario):

brew install pcre2

Quando si compila con TLS, installare OpenSSL e/o GnuTLS:

brew install openssl
brew install gnutls

Scaricare i sorgenti di Zabbix:

git clone https://git.zabbix.com/scm/zbx/zabbix.git

Compilare l'agent senza TLS:

cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
make
make install

Compilare l'agent con OpenSSL:

cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
make
make install

Compilare l'agent con 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

Compilazione dei binari dell'agent con librerie statiche senza TLS

Supponiamo che le librerie statiche di PCRE vengano installate in $HOME/static-libs. Useremo PCRE2 10.39.

PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"

Scaricare e compilare PCRE con il supporto per le proprietà 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

Scaricare il codice sorgente di Zabbix e compilare 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

Compilazione dei binari dell'agent con librerie statiche e OpenSSL

Durante la compilazione di OpenSSL, si consiglia di eseguire make test dopo una compilazione riuscita. Anche se la compilazione è andata a buon fine, a volte i test falliscono. In tal caso, i problemi devono essere analizzati e risolti prima di continuare.

Supponiamo che le librerie statiche di PCRE e OpenSSL vengano installate in $HOME/static-libs. Useremo PCRE2 10.39 e OpenSSL 1.1.1a.

PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"

Compiliamo le librerie statiche in static-libs-source:

mkdir static-libs-source
cd static-libs-source

Scaricare e compilare PCRE con il supporto per le proprietà 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 ..

Scaricare e compilare 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 ..

Scaricare il codice sorgente di Zabbix e compilare 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

Compilazione dei binari agent con librerie statiche con GnuTLS

GnuTLS dipende dal backend crittografico Nettle e dalla libreria aritmetica GMP. Invece di usare la libreria GMP completa, questa guida utilizzerà mini-gmp, che è inclusa in Nettle.

Quando si compilano GnuTLS e Nettle, si consiglia di eseguire make check dopo una compilazione riuscita. Anche se la compilazione è andata a buon fine, i test a volte falliscono. In tal caso, i problemi devono essere analizzati e risolti prima di continuare.

Supponiamo che le librerie statiche PCRE, Nettle e GnuTLS vengano installate in $HOME/static-libs. Useremo PCRE2 10.39, Nettle 3.4.1 e 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"

Compiliamo le librerie statiche in static-libs-source:

mkdir static-libs-source
cd static-libs-source

Scaricare e compilare 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 ..

Scaricare e compilare 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 ..

Scaricare il codice sorgente di Zabbix e compilare 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