2 在Windows上构建Zabbix agent 2
概述
本页演示如何在Windows 10(64位或32位)系统上从源代码构建Zabbix agent 2。
在64位平台上可以构建32位和64位版本,但在32位平台上只能构建32位的version。
构建Zabbix agent 2需要以下组件:
- MinGW构建工具
- Go编程语言
- OpenSSL(用于Zabbix中的encryption功能)
- PCRE2(Perl兼容正则表达式;用于Zabbix中的正则表达式模式匹配功能)
您可以通过以下任一方法构建Zabbix agent 2:
开始构建前请注意:
使用 vcpkg 构建 Zabbix agent 2
本节包含使用 vcpkg 构建 Zabbix agent 的说明,这是一个简化依赖项管理和与 C++ 项目集成的包管理器。
1. 下载并安装 Build Tools for Visual Studio 2022。
安装期间,请确保选择 使用 C++ 的桌面开发 工作负载,其中包含 vcpkg 包管理器。
2. 下载并安装 Go(提供为 MSI 安装程序)。
安装期间,请确保将安装文件夹指定为 C:\Zabbix\Go。
3. 下载使用 Microsoft Visual C 运行时库的 MinGW distribution;例如:
- 对于 64 位构建:
x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z - 对于 32 位构建:
i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z
然后,将其解压到 C:\Zabbix\mingw64(或 C:\Zabbix\mingw32 用于 32 位构建)。
4. 初始化 vcpkg 并安装构建 Zabbix agent 2 所需的依赖项(注意这可能需要一些时间):
cd C:\Zabbix
set PATH=%PATH%;"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\vcpkg"
vcpkg new --application
vcpkg add port pcre2
vcpkg add port libiconv
vcpkg add port openssl
# For 64-bit builds:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64
# For 32-bit builds:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86
5. 下载 Zabbix source archive 并将其解压到 C:\Zabbix\zabbix-7.0.0。
6. 进入 Zabbix 构建目录(C:\Zabbix\zabbix-7.0.0\build\mingw),并 create 以下 build.bat 脚本:
- 对于 64 位构建:
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"
:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"
:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
- 对于 32 位构建:
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%
:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"
:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"
:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
PCRE2="%vcpkg%" ^
OPENSSL="%vcpkg%" ^
all
7. 通过执行脚本编译 Zabbix agent 2:
build.bat
编译完成后,Zabbix agent 2 二进制文件将位于 C:\Zabbix\zabbix-7.0.0\bin\win64(用于 64 位构建)或 C:\Zabbix\zabbix-7.0.0\bin\win32(用于 32 位构建)。
Zabbix agent 2 配置文件位于 C:\Zabbix\zabbix-7.0.0\src\go\conf。
要 run agent,请将 zabbix_agent2.exe 及其配置文件复制到专用文件夹(例如 C:\Zabbix\agent2),然后 run agent:
mkdir C:\Zabbix\agent2
# For 64-bit builds:
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
# For 32-bit builds:
copy C:\Zabbix\zabbix-7.0.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-7.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-7.0.0\src\go\conf\zabbix_agent2.d C:\Zabbix\agent2\zabbix_agent2.d\
C:\Zabbix\agent2\zabbix_agent2.exe -c C:\Zabbix\agent2\zabbix_agent2.win.conf
如有需要,继续编译 Zabbix agent 2 可加载插件。
编译 Zabbix agent 2 可加载插件
-
下载与您的 Zabbix agent 2 version(例如,
zabbix-agent2-plugin-ember-plus-7. 0.0.tar.gz)匹配的 Zabbix plugin source,并将其解压到C:\Zabbix。 -
进入解压后的插件目录并编译插件:
cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-7. 0.0
# For 64-bit builds:
mingw32-make ARCH=AMD64
# For 32-bit builds:
mingw32-make ARCH=x86
编译完成后,Zabbix agent 2 插件二进制文件及其配置 file 将位于相同的插件目录中。
只要插件可执行文件能够被 Zabbix agent 2 加载,可以将其放置在任意位置。 在插件配置文件中指定插件二进制文件的路径,例如,在 Ember+ plugin 的 ember.conf 中:
Plugins.EmberPlus.System.Path=/path/to/executable/zabbix-agent2-plugin-ember-plus
插件配置 file 的路径必须在 Zabbix agent 2 配置文件的 Include 参数中指定:
Include=/path/to/plugin/configuration/file/ember.conf
手动构建 Zabbix agent 2
此 Zabbix agent 2 构建方法适用于需要对构建环境进行完全控制,或在受限环境中无法使用 vcpkg 的用户。
本节包含手动构建 Zabbix agent 2 的说明,包括安装所需的构建工具和依赖项,然后编译 agent。
构建工具的设置
-
下载并安装 [MSYS2](https://www.msys2. org/)(提供为 MSI 安装程序)。
安装期间,请确保将C:\Zabbix\msys64指定为安装文件夹。 -
下载并安装 Go(提供为 MSI 安装程序;请参阅当前支持的 agent-2)。
安装期间,请确保将C:\Zabbix\Go指定为安装文件夹。 -
下载使用 Microsoft Visual C 运行时库的 MinGW distribution;例如:
- 对于 64 位版本:
x86_64-15. 1. 0-release-win32-seh-msvcrt-rt_v12-rev0.7z - 对于 32 位版本:
i686-15. 1. 0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z
然后,将其解压到 C:\Zabbix\mingw64(或 C:\Zabbix\mingw32 用于 32 位版本)。
安装 OpenSSL
若不需TLS支持编译Zabbix agent,请直接跳转至安装PCRE2章节。
1. 以管理员权限打开MSYS2 MSYS终端,并run以下命令:
pacman -S perl-Locale-Maketext-Simple
pacman -S nasm
pacman -S make
pacman -S cmake
2. 下载OpenSSL source archive并解压至C:\Zabbix\openssl-3.5.0目录。
3. 进入解压后的OpenSSL目录,并create以下build.sh脚本:
- 64位版本编译:
#!/usr/bin/env bash
export PATH="/c/Zabbix/mingw64/bin:$PATH"
export d="/c/Zabbix/x64/OpenSSL-Win64-350-static"
perl Configure mingw64 no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d
make
make install
- 32位版本编译:
#!/usr/bin/env bash
export PATH="/c/Zabbix/mingw32/bin:$PATH"
export d="/c/Zabbix/x86/OpenSSL-Win64-350-static"
perl Configure mingw no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d
make
make install
请确保撤销非管理员用户对C:\Zabbix\x64\OpenSSL-Win64-350-static目录的写入权限。
否则agent会加载可能被非特权用户修改的SSL配置路径,导致潜在安全漏洞。
no-shared选项使libcrypto.lib和libssl.lib OpenSSL静态库自包含,因此Zabbix二进制文件将内置OpenSSL而无需外部DLL。 这意味着Zabbix二进制文件可复制到未安装OpenSSL库的其他Windows机器;但当OpenSSL发布新漏洞修复version时,需重新编译Zabbix agent。- 若不使用
no-shared选项,Zabbix运行时需依赖OpenSSL DLL。 这意味着OpenSSL更新可能无需重新编译Zabbix agent;但在复制到其他机器时,必须同时复制OpenSSL DLL文件。
更多OpenSSL配置选项信息,请参阅OpenSSL documentation。
4. 执行以下脚本配置并安装OpenSSL(注意此过程可能耗时较长):
cd /c/Zabbix/openssl-3.5.0
./build.sh
安装 PCRE2
-
下载PCRE2 source archive并解压至
C:\Zabbix\pcre2-10. 45目录。 -
以管理员权限打开MSYS2 MSYS终端, 然后在解压后的PCRE2目录中create一个
build目录并进入该目录:
mkdir /c/Zabbix/pcre2-10. 45/build
cd /c/Zabbix/pcre2-10. 45/build
- 配置PCRE2:
# For 64-bit builds:
export PATH="/c/Zabbix/mingw64/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..
# For 32-bit builds:
export PATH="/c/Zabbix/mingw32/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-m32 -O2 -g" -DCMAKE_EXE_LINKER_FLAGS="-Wl,-mi386pe" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x86/PCRE2" ..
若出现任何错误,建议在重复CMake构建过程前deleteCMake缓存。
缓存文件(CMakeCachecache.txt)位于解压后PCRE2目录的构建目录中。
- 安装PCRE2:
make install
编译 Zabbix agent 2
- 下载Zabbix source archive并将其解压到
C:\Zabbix\zabbix-7. 0.0目录。
如果你需要从原始源代码仓库中generate一个源代码归档文件(例如,应用自定义补丁或从最新的源代码构建),请在已安装 Go 的 Linux 机器上run以下命令(配置 Zabbix agent 2 所需):
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent2 --enable-ipv6 --prefix=`pwd`
make dist
这将create一个源代码归档文件,之后可以将其复制到 Windows 机器上。
- 以管理员权限打开命令提示符。 然后,进入 Zabbix 构建目录并编译 Zabbix agent; 确保正确指定 OpenSSL 和 PCRE2 的安装目录:
- 对于 64-位构建:
cd C:\Zabbix\zabbix-7. 0.0\build\mingw
set PATH=C:\Zabbix\mingw64\bin;%PATH%
mklink /D C:\Zabbix\x64\OpenSSL-Win64-350-static\lib C:\Zabbix\x64\OpenSSL-Win64-350-static\lib64
# With TLS support:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"
# Without TLS support:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
- 对于 32-位构建:
cd C:\Zabbix\zabbix-7. 0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%
# With TLS support:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"
# Without TLS support:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"
编译完成后,Zabbix agent 2 二进制文件将位于 C:\Zabbix\zabbix-7. 0.0\bin\win64(或 C:\Zabbix\zabbix-7. 0.0\bin\win32 用于 32-位构建)。
Zabbix agent 2 配置文件位于 C:\Zabbix\zabbix-7. 0.0\src\go\conf 中。
要run agent,请将 zabbix_agent2. exe 二进制文件及其配置文件copy到专用文件夹(例如 C:\Zabbix\agent2),然后run agent:
mkdir C:\Zabbix\agent2
copy C:\Zabbix\zabbix-7. 0.0\bin\win64\zabbix_agent2. exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-7. 0.0\src\go\conf\zabbix_agent2. win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-7. 0.0\src\go\conf\zabbix_agent2. d C:\Zabbix\agent2\zabbix_agent2. d\
C:\Zabbix\agent2\zabbix_agent2. exe -c C:\Zabbix\agent2\zabbix_agent2. win.conf
如有需要,请继续阅读编译 Zabbix agent 2 可加载插件。