3 macOS에서 Zabbix 에이전트 빌드하기
원본 보기3 macOS에서 Zabbix agent 빌드하기
개요
이 섹션에서는 TLS를 사용하거나 사용하지 않고 소스에서 Zabbix macOS agent 바이너리를 빌드하는 방법을 설명합니다.
사전 요구사항
명령줄 개발자 도구(Xcode는 필요하지 않음), Automake, pkg-config 및 PCRE(v8.x) 또는 PCRE2(v10.x)가 필요합니다. TLS와 함께 agent 바이너리를 빌드하려면 OpenSSL 또는 GnuTLS도 필요합니다.
Automake와 pkg-config를 설치하려면 https://brew.sh/에서 Homebrew 패키지 매니저가 필요합니다. 설치하려면 터미널을 열고 다음 명령을 실행하세요:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
그런 다음 Automake와 pkg-config를 설치하세요:
brew install automake
brew install pkg-config
PCRE, OpenSSL 및 GnuTLS 라이브러리 준비는 agent에 링크되는 방식에 따라 달라집니다.
이러한 라이브러리가 이미 설치된 macOS 시스템에서 agent 바이너리를 실행할 계획이라면 Homebrew에서 제공하는 사전 컴파일된 라이브러리를 사용할 수 있습니다. 이는 일반적으로 Zabbix agent 바이너리 빌드나 기타 목적으로 Homebrew를 사용하는 macOS 시스템입니다.
라이브러리의 공유 버전이 없는 macOS 시스템에서 agent 바이너리를 사용할 경우, 소스에서 정적 라이브러리를 컴파일하고 Zabbix agent와 링크해야 합니다.
공유 라이브러리로 agent 바이너리 빌드하기
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 없이 agent 빌드:
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6
make
make install
OpenSSL과 함께 agent 빌드:
cd zabbix
./bootstrap.sh
./configure --sysconfdir=/usr/local/etc/zabbix --enable-agent --enable-ipv6 --with-openssl=/usr/local/opt/openssl
make
make install
GnuTLS와 함께 agent 빌드:
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 없이 정적 라이브러리로 agent 바이너리 빌드하기
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 소스를 다운로드하고 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
OpenSSL과 함께 정적 라이브러리로 agent 바이너리 빌드하기
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 소스를 다운로드하고 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
GnuTLS와 함께 정적 라이브러리로 agent 바이너리 빌드하기
GnuTLS는 Nettle 암호화 백엔드와 GMP 산술 라이브러리에 의존합니다. 전체 GMP 라이브러리를 사용하는 대신, 이 가이드에서는 Nettle에 포함된 mini-gmp를 사용하겠습니다.
GnuTLS와 Nettle을 빌드할 때는 성공적으로 빌드한 후 make check를 실행하는 것이 좋습니다. 빌드가 성공했더라도 때때로 테스트가 실패할 수 있습니다. 이런 경우 계속하기 전에 문제를 조사하고 해결해야 합니다.
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 소스를 다운로드하고 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