zabbix6.0安装教程(四):构建 Zabbix agent
zabbix6.0安裝教程(四):構建 Zabbix agent
目錄
- 一、在 macOS 上構建 Zabbix agent
- 1. 概述
- 2. 必要條件
- 3. 使用共享庫構建 agent 二進制文件
- 4. 使用不帶 TLS 的靜態庫構建 agent 二進制文件
- 5. 使用 OpenSSL 構建帶有靜態庫的 agent 二進制文件
- 6. 使用帶有 GnuTLS 的靜態庫構建 agent 二進制文件
- 二、在Windows上構建Zabbix agent
- 1. 概述
- 2. 編譯OpenSSL
- 3. 編譯PCRE
- 4. 編譯 Zabbix
- 5. 用LibreSSL編譯Zabbix
- 三、在Windows中構建Zabbix agent 2
- 1. 概述
- 2. 安裝MinGW編譯器
- 3. 編譯 PCRE 開發庫
- 安裝OpenSSL開發庫
一、在 macOS 上構建 Zabbix agent
1. 概述
本節演示如何從包含或不包含 TLS 的源代碼構建 Zabbix macOS agent 二進制文件。
2. 必要條件
您將需要命令行開發人員工具(不需要Xcode),Automake,pkg-config和PCRE(v8.x)或PCRE2(v10.x)。如果要使用TLS構建 agent 二進制文件,則還需要 OpenSSL 或 GnuTLS。
要安裝 Automake 和 pkg-config ,您將需要來自 https://brew.sh/ 的軟件包管理器。要安裝它,請打開終端并運行以下命令:
$ /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 計算機上運行代理二進制文件,則可以使用 Homebrew 提供的預編譯庫。這些通常是 macOS 機器,它們使用 Homebrew 來構建 Zabbix agent 二進制文件或用于其他目的。
如果 agent 的二進制文件將在沒有共享版本的庫的 macOS 計算機上使用,則應從源代碼編譯靜態庫,并將 Zabbix agent與它們鏈接。
3. 使用共享庫構建 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 install4. 使用不帶 TLS 的靜態庫構建 agent 二進制文件
讓我們假設PCRE靜態庫將安裝在 $HOME/static-libs 中,我們將使用 PCRE2 10.39。
$ PCRE_PREFIX="$HOME/static-libs/pcre2-10.39"下載并構建具有 Unicode 支持的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 install5. 使用 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下載并構建具有 Unicode 支持的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 install6. 使用帶有 GnuTLS 的靜態庫構建 agent 二進制文件
GnuTLS 依賴于 Nettle 加密后端 和 GMP 算法庫。 本文將使用 Nettle 中包含的 mini-gmp,而不是使用完整的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二、在Windows上構建Zabbix agent
1. 概述
本節將演示如何從有或沒有TLS的源構建 Zabbix Windows agent二進制文件。
2. 編譯OpenSSL
接下來的步驟將助你在MS Windows 10(64位)的源中編譯OpenSSL。
1.編譯OpenSSL你需要在Windows機器上安裝:
1.C compiler (e.g. VS 2017 RC),
2.NASM (https://www.nasm.us/)
3.Perl (e.g. Strawberry Perl from http://strawberryperl.com/).
4.Perl module Text::Template (cpan Text::Template).
2.獲取 OpenSSL 源代碼 https://www.openssl.org/。這里用OpenSSL 1.1.1 版本。
3.解壓 OpenSSL 源,例如,解壓在 E:\openssl-1.1.1。
4.打開命令行窗口。例如,VS 2017 RC的 x64 原生工具命令提示符。
5.至 OpenSSL 源目錄, 例如,E:\openssl-1.1.1。
#驗證 NASM 能被找到: e:\openssl-1.1.1> nasm --version NASM version 2.13.01 compiled on May 1 20176.配置OpenSSL,例如:
e:\openssl-1.1.1> perl E:\openssl-1.1.1\Configure VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static- 請注意選項 ‘no-shared’:如果使用 ‘no-shared’ 那么OpenSSL靜態庫
libcrypto.lib和libssl.lib 將 ‘自給自足’,生成的Zabbix二進制文件本身將包含OpenSSL,不需要外部的OpenSSL DLLs。 優點: Zabbix二進制文件可以復制到其他沒有OpenSSL庫的Windows機器上。 缺點:當新的OpenSSL bugfix 版本發布時,需要重新編譯并安裝Zabbix agent。 - 如果不使用’no-shared’,那么靜態庫 libcrypto.lib和 libssl.lib 會在運行時使用OpenSSL DLLs。
- 優點:當新的OpenSSL bugfix版本發布時,你可能只需要升級OpenSSL DLLs不用重新編譯Zabbix agent。
- 缺點:復制Zabbix agent到另一個機器時,需要同時復制OpenSSL DLLs。
7.編譯OpenSSL,運行測試,安裝:
e:\openssl-1.1.1> nmake e:\openssl-1.1.1> nmake test ... All tests successful. Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr + 0.61 sys = 1.28 CPU) Result: PASS e:\openssl-1.1.1> nmake install_sw'install_sw'僅安裝軟件組件(例如 庫,頭文件,但不安裝文檔)。如果你希望安裝所有的文件,請用 nmake install。
3. 編譯PCRE
1.從 pcre.org (https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.zip) 存儲庫中下載PCRE 或 PCRE2 (Zabbix 6.0以上支持) 庫:
2.提取到目錄E:\pcre2-10.39
3.從https://cmake.org/download/ 安裝CMake,安裝過程中選擇: 確保 cmake\bin 在你的路徑的 (測試版本3.9.4).
4.創建一個新的空的構建目錄,最好是源目錄的子目錄。例如E:\pcre2-10.39\build.
5.打開命令行窗口,例如 VS 2017上的x64原生工具命令提示符 ,并且從該外部環境運行cmake-gui。不要試圖從窗口開始菜單啟動Cmake,因為這可能會導致錯誤。
6.分別為源目錄和構建目錄輸入 E:\pcre2-10.39 和E:\pcre2-10.39\build 。
7.點擊 “Configure” 按鈕。
8.為此項目指定生成器時,請選擇 “NMake Makefiles”。
9.創建一個新的空的安裝目錄。例如,E:\pcre2-10.39-install。
10.GUI 將列出幾個配置選項。確保選擇了以下幾個選項:
- PCRE_SUPPORT_UNICODE_PROPERTIES ON
- PCRE_SUPPORT_UTF ON
- CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
11.再次點擊 “Configure” 。相鄰的"Generate"按鈕需要啟用。
12.點擊 “Generate”.
13.如果出現錯誤,建議在嘗試重復構建CMake的過程中刪除CMake緩存。 在CMake GUI中,緩存可以通過選擇 "File > Delete Cache"來刪除。
14.構建目錄現在應該包含了一個可用的構建系統 - Makefile.
15.打開命令行窗口,例如 VS 2017上的x64原生工具命令提示符 ,導航到上面提到的 Makefile 。
16.運行 NMake 命令:
E:\pcre2-10.39\build> nmake install4. 編譯 Zabbix
以下步驟將助你從MS Windows 10 (64位)上的源碼中編譯Zabbix。在編譯有或沒有TLS支持的Zabbix時,唯一顯著的區別在步驟4。
1.在Linux機器上,檢查git源代碼:
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git $ cd zabbix $ ./bootstrap.sh $ ./configure --enable-agent --enable-ipv6 --prefix=`pwd` $ make dbschema $ make dist.2.在Windows機器上復制和解壓歸檔文件,例如 zabbix-4.4.0.tar.gz。
3.我們假設源代碼在 e:\zabbix-4.4.0中。打開命令行窗口,例如 VS 2017 RC中的 x64原生工具命令提示符。轉至 E:\zabbix-4.4.0\build\win32\project。
4.編譯 zabbix_get, zabbix_sender 和 zabbix_agent。
- 無TLS:
- 有TLS:
5.新的二進制文件位于 e:\zabbix-4.4.0\bin\win64。由于 OpenSSL 是用 ‘no-shared’ 選項編譯的,Zabbix二進制文件本身包含OpenSSL,可以復制到其他沒有OpenSSL的機器中。
5. 用LibreSSL編譯Zabbix
該過程類似于使用OpenSSL編譯,但是你需要對位于build\win32\project 目錄中的文件進行一些小的改變:
* In ''Makefile_tls'' delete ''/DHAVE_OPENSSL_WITH_PSK''. i.e. find <code>CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK</code>
然后用
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
進行替換
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE /PDB:$(TARGETDIR)\$(TARGETNAME).pdb</code>
然后用
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT
進行替換
三、在Windows中構建Zabbix agent 2
1. 概述
本節將演示如何從源代碼構建Zabbix agent 2 (Windows)。
2. 安裝MinGW編譯器
編譯時使用Windows提示符代替MinGW提供的MSYS終端。
3. 編譯 PCRE 開發庫
以下說明將編譯并安裝c:\dev\pcre中的64位PCRE 庫和c:\dev\pcre32 的32位庫:
構建64位 PCRE
構建32位PCRE
安裝OpenSSL開發庫
編譯Zabbix agent 2
32位
打開 MinGW 環境(Windows命令提示符)并導航至Zabbix源樹中的build/mingw 目錄。
運行:
64位
打開MinGW環境(Windows命令提示符)并導航至Zabbix源樹目錄中的build/mingw。
運行:
32和64位 版本都可以構建在64位的平臺上,但是32位平臺只能構建32位版本。 在32位平臺上運行時,請遵循64位版本在64位平臺上運行的步驟。
排版: 何鵬輝
初審: 玩具熊
復審: 二月二
本篇教程來源樂維社區|專注IT運維技術分享樂維社區|專注IT運維技術分享,經本工作室二次編輯,如有侵權,請聯系我們。
參考資料:
1.在 macOS 上構建 Zabbix agent
2.在Windows上構建Zabbix agent
3.在Windows中構建Zabbix agent 2
總結
以上是生活随笔為你收集整理的zabbix6.0安装教程(四):构建 Zabbix agent的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【手动导入maven包】
- 下一篇: 移动魔百盒M304A 线刷固件及教程分享