Building Zabbix agent on macOS

Przegląd

Ta sekcja pokazuje, jak zbudować binaria agenta Zabbix dla systemu macOS ze źródeł, z obsługą TLS lub bez niej.

Wymagania wstępne

Będziesz potrzebować narzędzi deweloperskich wiersza poleceń (Xcode nie jest wymagany), Automake, pkg-config oraz PCRE (v8.x) lub PCRE2 (v10.x). Jeśli chcesz zbudować pliki binarne agent z obsługą TLS, będziesz także potrzebować OpenSSL lub GnuTLS.

Aby zainstalować Automake i pkg-config, będziesz potrzebować menedżera pakietów Homebrew ze strony https://brew.sh/. Aby go zainstalować, otwórz terminal i uruchom następujące polecenie:

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

Następnie zainstaluj Automake i pkg-config:

brew install automake
brew install pkg-config

Przygotowanie bibliotek PCRE, OpenSSL i GnuTLS zależy od sposobu, w jaki będą one linkowane z agent.

Jeśli zamierzasz uruchamiać pliki binarne agent na komputerze z macOS, który ma już te biblioteki, możesz użyć wstępnie skompilowanych bibliotek dostarczanych przez Homebrew. Zwykle są to komputery z macOS, na których Homebrew jest używany do budowania plików binarnych agent Zabbix lub do innych celów.

Jeśli pliki binarne agent będą używane na komputerach z macOS, które nie mają współdzielonej wersji bibliotek, powinieneś skompilować biblioteki statyczne ze źródeł i połączyć z nimi agent Zabbix.

Budowanie plików binarnych agent z bibliotekami współdzielonymi

Zainstaluj PCRE2 (w razie potrzeby zastąp pcre2 przez pcre w poniższych poleceniach):

brew install pcre2

Podczas budowania z TLS zainstaluj OpenSSL i/lub GnuTLS:

brew install openssl
brew install gnutls

Pobierz kod źródłowy Zabbix:

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

Zbuduj agent bez TLS:

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

Zbuduj agent z OpenSSL:

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

Zbuduj agent z 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

Budowanie plików binarnych agent z bibliotekami statycznymi bez TLS

Załóżmy, że statyczne biblioteki PCRE zostaną zainstalowane w $HOME/static-libs. Użyjemy PCRE2 10.39.

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

Pobierz i zbuduj PCRE z obsługą właściwości 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

Pobierz kod źródłowy Zabbix i zbuduj 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

Budowanie plików binarnych agent z bibliotekami statycznymi przy użyciu OpenSSL

Podczas budowania OpenSSL zaleca się uruchomienie make test po pomyślnym zakończeniu kompilacji. Nawet jeśli kompilacja zakończyła się sukcesem, testy czasami kończą się niepowodzeniem. W takim przypadku należy zbadać problemy i je rozwiązać przed kontynuowaniem.

Załóżmy, że statyczne biblioteki PCRE i OpenSSL zostaną zainstalowane w $HOME/static-libs. Użyjemy PCRE2 10.39 oraz OpenSSL 1.1.1a.

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

Zbudujmy biblioteki statyczne w static-libs-source:

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

Pobierz i zbuduj PCRE z obsługą właściwości 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 ..

Pobierz i zbuduj 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 ..

Pobierz kod źródłowy Zabbix i zbuduj 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

Budowanie plików binarnych agent z bibliotekami statycznymi przy użyciu GnuTLS

GnuTLS zależy od backendu kryptograficznego Nettle oraz biblioteki arytmetycznej GMP. Zamiast używać pełnej biblioteki GMP, ten przewodnik wykorzystuje mini-gmp, które jest dołączone do Nettle.

Podczas budowania GnuTLS i Nettle zaleca się uruchomienie make check po pomyślnym zakończeniu kompilacji. Nawet jeśli kompilacja zakończyła się powodzeniem, testy czasami kończą się niepowodzeniem. W takim przypadku należy zbadać problemy i rozwiązać je przed kontynuowaniem.

Załóżmy, że statyczne biblioteki PCRE, Nettle i GnuTLS zostaną zainstalowane w $HOME/static-libs. Użyjemy PCRE2 10.39, Nettle 3.4.1 oraz 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"

Zbudujmy biblioteki statyczne w static-libs-source:

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

Pobierz i zbuduj 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 ..

Pobierz i zbuduj 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 ..

Pobierz kod źródłowy Zabbix i zbuduj 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