Building Zabbix agent on macOS
Pārskats
Šajā sadaļā ir parādīts, kā no pirmkoda izveidot Zabbix macOS aģents bināros failus ar vai bez TLS.
Priekšnosacījumi
Jums būs nepieciešami komandrindas izstrādātāja rīki (Xcode nav nepieciešams), Automake, pkg-config un PCRE (v8.x) vai PCRE2 (v10.x). Ja vēlaties būvēt aģents bināros failus ar TLS, jums būs nepieciešams arī OpenSSL vai GnuTLS.
Lai instalētu Automake un pkg-config, jums būs nepieciešams Homebrew pakotņu pārvaldnieks no https://brew.sh/. Lai to instalētu, atveriet termināli un izpildiet šo komandu:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Pēc tam instalējiet Automake un pkg-config:
brew install automake
brew install pkg-config
PCRE, OpenSSL un GnuTLS bibliotēku sagatavošana ir atkarīga no tā, kā tās tiks piesaistītas aģents.
Ja plānojat palaist aģents bināros failus macOS datorā, kurā šīs bibliotēkas jau ir pieejamas, varat izmantot Homebrew nodrošinātās iepriekš kompilētās bibliotēkas. Parasti tie ir macOS datori, kuros Homebrew tiek izmantots Zabbix aģents bināro failu būvēšanai vai citiem mērķiem.
Ja aģents binārie faili tiks izmantoti macOS datoros, kuros nav bibliotēku koplietojamās versijas, jums vajadzētu kompilēt statiskās bibliotēkas no pirmkoda un sasaistīt Zabbix aģents ar tām.
Aģenta bināro failu veidošana ar koplietojamām bibliotēkām
Instalējiet PCRE2 (ja nepieciešams, tālāk norādītajās komandās aizstājiet pcre2 ar pcre):
brew install pcre2
Veidojot ar TLS, instalējiet OpenSSL un/vai GnuTLS:
brew install openssl
brew install gnutls
Lejupielādējiet Zabbix pirmkodu:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
Veidojiet aģentu bez TLS:
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
make
make install
Veidojiet aģentu ar OpenSSL:
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
make
make install
Veidojiet aģentu ar 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
Aģenta bināro failu veidošana ar statiskajām bibliotēkām bez TLS
Pieņemsim, ka PCRE statiskās bibliotēkas tiks instalētas mapē
$HOME/static-libs. Mēs izmantosim PCRE2 10.39.
PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
Lejupielādējiet un izveidojiet PCRE ar Unicode īpašību atbalstu:
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
Lejupielādējiet Zabbix pirmkodu un izveidojiet aģentu:
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
Aģenta bināro failu veidošana ar statiskajām bibliotēkām un OpenSSL
Veidojot OpenSSL, pēc veiksmīgas veidošanas ir ieteicams palaist make test.
Pat ja veidošana bija veiksmīga, testi dažkārt neizdodas.
Ja tā notiek, problēmas ir jāizpēta un jānovērš, pirms turpināt.
Pieņemsim, ka PCRE un OpenSSL statiskās bibliotēkas tiks instalētas
mapē $HOME/static-libs. Mēs izmantosim PCRE2 10.39 un OpenSSL 1.1.1a.
PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"
Izveidosim statiskās bibliotēkas mapē static-libs-source:
mkdir static-libs-source
cd static-libs-source
Lejupielādējiet un izveidojiet PCRE ar Unicode īpašību atbalstu:
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 ..
Lejupielādējiet un izveidojiet 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 ..
Lejupielādējiet Zabbix pirmkodu un izveidojiet aģentu:
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
Aģenta bināro failu veidošana ar statiskajām bibliotēkām, izmantojot GnuTLS
GnuTLS ir atkarīgs no Nettle kriptogrāfijas aizmugures un GMP aritmētikas bibliotēkas. Pilnas GMP bibliotēkas vietā šajā ceļvedī tiks izmantots mini-gmp, kas ir iekļauts Nettle.
Veidojot GnuTLS un Nettle, pēc veiksmīgas izveides ieteicams palaist make check.
Pat ja izveide bija veiksmīga, testi dažkārt neizdodas. Ja tā notiek,
problēmas ir jāizpēta un jānovērš, pirms turpināt.
Pieņemsim, ka PCRE, Nettle un GnuTLS statiskās bibliotēkas tiks
instalētas mapē $HOME/static-libs. Mēs izmantosim PCRE2 10.39, Nettle 3.4.1
un 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"
Izveidosim statiskās bibliotēkas mapē static-libs-source:
mkdir static-libs-source
cd static-libs-source
Lejupielādējiet un izveidojiet 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 ..
Lejupielādējiet un izveidojiet 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 ..
Lejupielādējiet Zabbix pirmkodu un izveidojiet aģentu:
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