Erstellen des Zabbix Agent unter macOS

Übersicht

Dieser Abschnitt zeigt, wie Zabbix macOS-Agent-Binärdateien aus dem Quellcode mit oder ohne TLS erstellt werden.

Voraussetzungen

Sie benötigen Entwicklerwerkzeuge für die Befehlszeile (Xcode ist nicht erforderlich), Automake, pkg-config und PCRE (v8.x) oder PCRE2 (v10.x). Wenn Sie Agent- Binärdateien mit TLS erstellen möchten, benötigen Sie außerdem OpenSSL oder GnuTLS.

Um Automake und pkg-config zu installieren, benötigen Sie den Paketmanager Homebrew von https://brew.sh/. Um ihn zu installieren, öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:

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

Installieren Sie dann Automake und pkg-config:

brew install automake
brew install pkg-config

Die Vorbereitung der Bibliotheken PCRE, OpenSSL und GnuTLS hängt davon ab, wie sie mit dem Agent verknüpft werden sollen.

Wenn Sie beabsichtigen, Agent-Binärdateien auf einem macOS-Rechner auszuführen, auf dem diese Bibliotheken bereits vorhanden sind, können Sie vorkompilierte Bibliotheken verwenden, die von Homebrew bereitgestellt werden. Dies sind typischerweise macOS-Rechner, die Homebrew zum Erstellen von Zabbix-Agent-Binärdateien oder für andere Zwecke verwenden.

Wenn Agent-Binärdateien auf macOS-Rechnern verwendet werden sollen, auf denen keine gemeinsam genutzte Version der Bibliotheken vorhanden ist, sollten Sie statische Bibliotheken aus den Quellen kompilieren und den Zabbix-Agent damit verknüpfen.

Erstellen von Agent-Binärdateien mit gemeinsam genutzten Bibliotheken

Installieren Sie PCRE2 (ersetzen Sie pcre2 bei Bedarf in den folgenden Befehlen durch pcre):

brew install pcre2

Wenn Sie mit TLS erstellen, installieren Sie OpenSSL und/oder GnuTLS:

brew install openssl
brew install gnutls

Laden Sie den Zabbix-Quellcode herunter:

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

Erstellen Sie den Agent ohne TLS:

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

Erstellen Sie den Agent mit OpenSSL:

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

Erstellen Sie den Agent mit 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

Erstellen von Agent-Binärdateien mit statischen Bibliotheken ohne TLS

Nehmen wir an, dass die statischen PCRE-Bibliotheken in $HOME/static-libs installiert werden. Wir verwenden PCRE2 10.39.

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

Laden Sie PCRE herunter und erstellen Sie es mit Unterstützung für Unicode-Eigenschaften:

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

Laden Sie den Zabbix-Quellcode herunter und erstellen Sie den 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

Erstellen von Agent-Binärdateien mit statischen Bibliotheken mit OpenSSL

Beim Erstellen von OpenSSL wird empfohlen, nach einem erfolgreichen Build make test auszuführen. Selbst wenn der Build erfolgreich war, schlagen Tests manchmal fehl. Ist dies der Fall, sollten die Probleme untersucht und behoben werden, bevor Sie fortfahren.

Nehmen wir an, dass die statischen Bibliotheken von PCRE und OpenSSL in $HOME/static-libs installiert werden. Wir verwenden PCRE2 10.39 und OpenSSL 1.1.1a.

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

Erstellen wir die statischen Bibliotheken in static-libs-source:

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

Laden Sie PCRE mit Unterstützung für Unicode-Eigenschaften herunter und erstellen Sie es:

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

Laden Sie OpenSSL herunter und erstellen Sie es:

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

Laden Sie den Zabbix-Quellcode herunter und erstellen Sie den 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

Erstellen von Agent-Binärdateien mit statischen Bibliotheken mit GnuTLS

GnuTLS hängt vom Nettle-Krypto-Backend und der GMP-Arithmetikbibliothek ab. Anstelle der vollständigen GMP-Bibliothek wird in dieser Anleitung mini-gmp verwendet, das in Nettle enthalten ist.

Beim Erstellen von GnuTLS und Nettle wird empfohlen, nach einem erfolgreichen Build make check auszuführen. Selbst wenn der Build erfolgreich war, schlagen Tests manchmal fehl. In diesem Fall sollten die Probleme untersucht und behoben werden, bevor Sie fortfahren.

Nehmen wir an, dass die statischen Bibliotheken von PCRE, Nettle und GnuTLS in $HOME/static-libs installiert werden. Wir verwenden PCRE2 10.39, Nettle 3.4.1 und 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"

Erstellen wir die statischen Bibliotheken in static-libs-source:

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

Nettle herunterladen und erstellen:

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

GnuTLS herunterladen und erstellen:

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

Zabbix-Quellcode herunterladen und Agent erstellen:

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