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