3 Zabbix-agent bouwen op macOS

Overzicht

Dit gedeelte laat zien hoe je Zabbix macOS-agentbinaries kunt compileren vanuit bronnen met of zonder TLS-ondersteuning.

Vereisten

Je hebt de opdrachtregelontwikkelaarstools nodig (Xcode is niet vereist), Automake, pkg-config en PCRE (v8.x) of PCRE2 (v10.x). Als je agentbinaries met TLS wilt compileren, heb je ook OpenSSL of GnuTLS nodig.

Om Automake en pkg-config te installeren, heb je een Homebrew-pakketbeheerder nodig van https://brew.sh/. Om het te installeren, open je de terminal en voer je de volgende opdracht uit:

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

Installeer vervolgens Automake en pkg-config:

brew install automake
       brew install pkg-config

Het voorbereiden van de PCRE-, OpenSSL- en GnuTLS-bibliotheken hangt af van de manier waarop ze aan de agent worden gekoppeld.

Als je van plan bent om agentbinaries op een macOS-machine uit te voeren die al over deze bibliotheken beschikt, kun je vooraf gecompileerde bibliotheken gebruiken die worden aangeboden door Homebrew. Dit zijn doorgaans macOS-machines die Homebrew gebruiken voor het compileren van Zabbix-agentbinaries of voor andere doeleinden.

Als agentbinaries zullen worden gebruikt op macOS-machines die de gedeelde versie van de bibliotheken niet hebben, moet je statische bibliotheken compileren uit bronnen en de Zabbix-agent ermee koppelen.

Agent-binaries bouwen met gedeelde bibliotheken

Installeer PCRE2 (vervang pcre2 door pcre in de onderstaande opdrachten, indien nodig):

brew install pcre2

Bij het compileren met TLS, installeer OpenSSL en/of GnuTLS:

brew install openssl
       brew install gnutls

Download de Zabbix-bron:

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

Bouw de agent zonder TLS:

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

Bouw de agent met OpenSSL:

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

Bouw de agent met 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

Agent-binaries bouwen met statische bibliotheken zonder TLS

Laten we aannemen dat de statische bibliotheken van PCRE worden geïnstalleerd in $HOME/static-libs. We zullen PCRE2 10.39 gebruiken.

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

Download en bouw PCRE met ondersteuning voor Unicode-eigenschappen:

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

Download de Zabbix-bron en bouw de 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

Agent-binaries bouwen met statische bibliotheken met OpenSSL

Bij het compileren van OpenSSL wordt aanbevolen om na succesvolle compilatie make test uit te voeren. Zelfs als de compilatie succesvol was, mislukken de tests soms. Als dat het geval is, moeten de problemen worden onderzocht en opgelost voordat je doorgaat.

Laten we aannemen dat de statische bibliotheken van PCRE en OpenSSL worden geïnstalleerd in $HOME/static-libs. We zullen PCRE2 10.39 en OpenSSL 1.1.1a gebruiken.

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

Laten we statische bibliotheken bouwen in static-libs-source:

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

Download en bouw PCRE met ondersteuning voor Unicode-eigenschappen:

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 ..

Download en bouw 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 ..

Download de Zabbix-bron en bouw de 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

Agent-binaries bouwen met statische bibliotheken met GnuTLS

GnuTLS is afhankelijk van de Nettle-crypto-backend en de GMP-rekenkundige bibliotheek. In plaats van de volledige GMP-bibliotheek te gebruiken, zal deze handleiding mini-gmp gebruiken, die is opgenomen in Nettle.

Bij het bouwen van GnuTLS en Nettle wordt aanbevolen om na succesvolle compilatie make check uit te voeren. Zelfs als de compilatie succesvol was, mislukken de tests soms. Als dat het geval is, moeten de problemen worden onderzocht en opgelost voordat je doorgaat.

Laten we aannemen dat de statische bibliotheken van PCRE, Nettle en GnuTLS worden geïnstalleerd in $HOME/static-libs. We zullen PCRE2 10.39, Nettle 3.4.1 en GnuTLS 3.6.5 gebruiken.

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"

Laten we statische bibliotheken bouwen in static-libs-source:

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

Download en bouw 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 ..

Download en bouw 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 ..

Download de Zabbix-bron en bouw de 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