Сборка агента Zabbix на macOS
Обзор
Этот раздел демонстрирует, как можно собрать бинарные файлы Zabbix агента для macOS из исходного кода с / без поддержки TLS.
Предварительные требования
Вам потребуются инструменты разработчика командной строки (Xcode не требуется), Automake, pkg-config и PCRE (v8.x) или PCRE2 (v10.x). Если вы хотите собрать двоичные файлы агента с поддержкой TLS, вам также потребуется OpenSSL или GnuTLS.
Чтобы установить Automake и pkg-config, вам потребуется менеджер пакетов Homebrew с сайта https://brew.sh/. Для его установки откройте терминал и выполните следующую команду:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Затем установите Automake и pkg-config:
brew install automake
brew install pkg-config
Подготовка библиотек PCRE, OpenSSL и GnuTLS зависит от того, каким образом они будут скомпонованы с агентом.
Если вы планируете запускать двоичные файлы агента на компьютере с macOS, где эти библиотеки уже установлены, вы можете использовать предварительно скомпилированные библиотеки, предоставляемые Homebrew. Обычно это компьютеры с macOS, на которых Homebrew используется для сборки двоичных файлов агента Zabbix или для других целей.
Если двоичные файлы агента будут использоваться на компьютерах с macOS, где отсутствуют разделяемые версии библиотек, вам следует скомпилировать статические библиотеки из исходного кода и скомпоновать с ними агент Zabbix.
Сборка бинарных файлов агента с разделяемыми библиотеками
Установите PCRE2 (замените pcre2 на pcre в команде ниже по необходимости):
brew install pcre2
При сборке с поддержкой TLS, установите OpenSSL и / или GnuTLS:
brew install openssl
brew install gnutls
Загрузите исходный код Zabbix:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
Сборка агента без поддержки TLS:
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
make
make install
Сборка агента с OpenSSL:
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
make
make install
Сборка агента с 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
Сборка бинарных файлов агента со статическими библиотеками без TLS
Предположим, что статические библиотеки PCRE уже установлены в $HOME/static-libs. Мы будем использовать PCRE2 10.39.
PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
Загрузите и соберите PCRE с поддержкой свойств Юникод:
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
Загрузите исходный код Zabbix и соберите агента:
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
Сборка бинарных файлов агента со статическими библиотеками с OpenSSL
После успешной сборки OpenSSL рекомендуется выполнить make test. Иногда даже после успешной сборки тесты завершаются с ошибками. Если тесты завершаются с ошибками, проблемы необходимо рассмотреть и исправить перед тем как продолжить.
Предположим, что статические библиотеки PCRE и OpenSSL будут установлены в $HOME/static-libs. Мы будем использовать PCRE2 10.39 и OpenSSL 1.1.1a.
PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"
OPENSSL_PREFIX="$HOME/static-libs/openssl-1.1.1a"
Давайте соберем статические библиотеки в static-libs-source:
mkdir static-libs-source
cd static-libs-source
Загрузите и соберите PCRE с поддержкой свойств Юникод:
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 ..
Загрузите и соберите 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 ..
Загрузите исходный код Zabbix и соберите агента:
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
Сборка бинарных файлов агента со статическими библиотеками с GnuTLS
GnuTLS зависит от низкоуровневой криптографической библиотеки Nettle и арифметической библиотеки GMP. Вместо использования полновесной библиотеки GMP, в этом руководстве будет использоваться mini-gmp, который включён в Nettle.
После успешной сборки GnuTLS и Nettle рекомендуется выполнить make test. Иногда даже после успешной сборки тесты завершаются с ошибками. Если тесты завершаются с ошибками, проблемы необходимо рассмотреть и исправить перед тем как продолжить.
Предположим, что статические библиотеки PCRE, Nettle и GnuTLS будут установлены в $HOME/static-libs. Мы будем использовать PCRE2 10.39, Nettle 3.4.1 и 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"
Давайте соберём статические библиотеки в static-libs-source:
mkdir static-libs-source
cd static-libs-source
Загрузите и соберите 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 ..
Загрузите и соберите 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 ..
Загрузите исходный код Zabbix и соберите агента:
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