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
Avrai bisogno degli strumenti di sviluppo da riga di comando (Xcode non è richiesto), di Automake, pkg-config e PCRE (v8.x) oppure PCRE2 (v10.x). Se vuoi compilare i binari dell'agent con TLS, avrai bisogno anche di OpenSSL o GnuTLS.
Per installare Automake e pkg-config, avrai bisogno del gestore di pacchetti Homebrew da https://brew.sh/. Per installarlo, apri il terminale ed esegui il seguente comando:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Quindi installa 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 intendi eseguire i binari dell'agent su una macchina macOS che dispone già di queste librerie, puoi usare le librerie precompilate fornite da Homebrew. In genere si tratta di macchine macOS che usano Homebrew per compilare i binari dell'agent Zabbix o per altri scopi.
Se i binari dell'agent verranno usati su macchine macOS che non dispongono della versione condivisa delle librerie, dovresti compilare librerie statiche dai sorgenti e collegare l'agent Zabbix con esse.
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