在 Windows 上构建 Zabbix agent
概述
本页演示如何在 Windows 10(64 位)上从源代码构建 Zabbix agent。
这些说明适用于支持 Visual Studio 2022 的 Windows 版本。
构建 Zabbix agent 需要:
- C 编译器(包含在 Build Tools for Visual Studio 2022 中)
- OpenSSL(用于 Zabbix 中的加密功能)
- PCRE2(Perl Compatible Regular Expressions;用于 Zabbix 中的正则表达式模式匹配功能)
您可以使用以下任一方法构建 Zabbix agent:
根据您的监控需求,可能还需要其他库。更多信息请参见要求。
在开始构建过程之前,请注意:
- 要执行命令,请使用 x64 Native Tools Command Prompt(包含在 Build Tools for Visual Studio 2022 中),并由具有足够权限写入受保护文件夹的用户启动。
- 建议在
C:\Zabbix中为所有源文件和构建文件夹创建一个工作目录。不过,编译后的组件应安装在C:\Program Files\Zabbix\x64中。
使用 vcpkg 构建 Zabbix agent
本节包含使用 vcpkg 构建 Zabbix agent 的说明。vcpkg 是一个包管理器,可简化依赖管理以及与 C++ 项目的集成。
1. 下载并安装 Build Tools for Visual Studio 2022。 安装期间,请确保选择 使用 C++ 的桌面开发 工作负载,其中包含使用 vcpkg 构建 agent 所需的工具:
- C 编译器(Microsoft Visual C++)
- NMake 命令行工具
- vcpkg 包管理器
- x64 Native Tools Command Prompt
2. 初始化 vcpkg 并安装构建 Zabbix agent 所需的依赖项(请注意,这可能需要一些时间):
cd C:\Zabbix
vcpkg new --application
vcpkg add port pcre2
vcpkg add port openssl
vcpkg install --triplet x64-windows-static --x-install-root="C:\Program Files\Zabbix\x64"
3. 下载 Zabbix 源代码归档包 并将其解压到 C:\Zabbix\zabbix-8.0.0。
4. 进入 Zabbix 构建目录(C:\Zabbix\zabbix-8.0.0\build\win32\project)并创建以下 build.bat 脚本;
请确保正确指定 OpenSSL 和 PCRE2 的安装目录:
:: Set vcpkg installation path:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static
:: Run the build process:
nmake -f Makefile CPU=AMD64 ^
PCRE2INCDIR="%vcpkg%\include" ^
PCRE2LIBDIR="%vcpkg%\lib" ^
TLS=openssl ^
TLSINCDIR="%vcpkg%\include" ^
TLSLIBDIR="%vcpkg%\lib" ^
LIBS="$(LIBS) Crypt32.lib" ^
all
5. 执行该脚本以编译 Zabbix agent:
build.bat
编译完成后,Zabbix 组件二进制文件将位于 C:\Zabbix\zabbix-8.0.0\bin\win64。
Zabbix agent 配置文件位于 C:\Zabbix\zabbix-8.0.0\conf。
要运行 agent,请将 zabbix_agent.exe 及其配置文件复制到专用文件夹(例如 C:\Zabbix\agent),然后运行 agent:
mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.0.0\conf\zabbix_agent.win.conf C:\Zabbix\agent\
C:\Zabbix\agent\zabbix_agent.exe -c C:\Zabbix\agent\zabbix_agent.win.conf
手动构建 Zabbix agent
这种构建 Zabbix agent 的方法适用于需要完全控制构建环境的用户,或处于受限环境中而无法使用 vcpkg的用户。
本节包含手动构建 Zabbix agent 的说明,包括安装所需的构建工具和依赖项(Perl、OpenSSL、PCRE2),然后编译 agent。
安装构建工具
1. 下载并安装 Build Tools for Visual Studio 2022。 安装过程中,请确保选择 使用 C++ 的桌面开发 工作负载,其中包含手动构建 agent 所需的工具:
- C 编译器(Microsoft Visual C++)
- NMake 命令行工具
- x64 Native Tools Command Prompt
安装 OpenSSL
若要在不支持 TLS 的情况下编译 Zabbix agent,请继续阅读安装 PCRE2部分。
1. 下载并安装 Strawberry Perl(提供 MSI 安装程序)。
安装过程中,请务必将安装目录指定为 C:\Zabbix\Strawberry。
2. 安装 Text::Template Perl 模块:
cpanm Text::Template
3. 验证 Netwide Assembler(NASM;编译 OpenSSL 所必需)是否已在 Strawberry Perl 安装期间一并编译:
nasm -v
# NASM version 2.16.01 compiled on May 3 2024
如果 NASM 未编译,请手动安装。更多信息请参见 NASM documentation。
4. 下载 OpenSSL 源代码归档包,并将其解压到 C:\Zabbix\openssl-3.5.0。
5. 进入解压后的目录并配置 OpenSSL,例如:
cd C:\Zabbix\openssl-3.5.0
perl Configure VC-WIN64A no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix="C:\Program Files\Zabbix\x64\OpenSSL" --openssldir="C:\Program Files\Zabbix\x64\OpenSSL"
如果您在 Windows 上编译 Zabbix agent 时为 OpenSSL 选择了自定义目录(例如 C:\zabbix 或 C:\openssl-64bit),请确保撤销非管理员用户对此目录的写入权限。
否则,agent 将从可被非特权用户修改的路径加载 SSL 设置,从而导致潜在的安全漏洞。
no-shared选项会使 libcrypto.lib 和 libssl.lib 这两个 OpenSSL 静态库成为自包含库,因此 Zabbix 二进制文件会包含 OpenSSL,而无需外部 DLL。 这意味着 Zabbix 二进制文件可以在没有 OpenSSL 库的情况下复制到其他 Windows 计算机;但是,当发布新的 OpenSSL 缺陷修复版本时,需要重新编译 Zabbix agent。- 如果不使用
no-shared选项,Zabbix 将在运行时依赖 OpenSSL DLL。 这意味着 OpenSSL 更新可能不需要重新编译 Zabbix agent;但是,在将其复制到其他计算机时,也必须一并复制 OpenSSL DLL。
有关其他 OpenSSL 配置选项的更多信息,请参见 OpenSSL documentation。
6. 编译 OpenSSL 并运行测试(请注意,这可能需要一些时间):
请在非管理员权限下运行测试;否则,可能会导致意外结果或安全风险。 如果某些测试失败,请参见 OpenSSL documentation 进行故障排查。
nmake
nmake test
...
All tests successful.
Files=325, Tests=3101, 822 wallclock secs ( 4.81 usr + 0.81 sys = 5.62 CPU)
Result: PASS
7. 安装 OpenSSL:
nmake install
如果只安装软件组件(库、头文件,不包括文档),可以使用 nmake install_sw。
安装 PCRE2
1. 下载并安装 CMake(提供 MSI 安装程序)。
在安装过程中,请确保将安装文件夹指定为 C:\Zabbix\CMake,并选择 Add CMake to the PATH environment variable 选项。
2. 下载 PCRE2 源代码归档,并将其解压到 C:\Zabbix\pcre2-10.45。
3. 在解压后的 PCRE2 目录中创建 build 目录,并进入该目录:
mkdir C:\Zabbix\pcre2-10.45\build
cd C:\Zabbix\pcre2-10.45\build
4. 配置 PCRE2:
cmake -G "NMake Makefiles" -DPCRE_SUPPORT_UNICODE_PROPERTIES=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\Program Files\Zabbix\x64\PCRE2" "C:\Zabbix\pcre2-10.45"
如果发生任何错误,建议在尝试重新执行 CMake 构建过程之前删除 CMake 缓存。
缓存(CMakeCachecache.txt)位于解压后的 PCRE2 目录中的 build 目录内。
5. 使用 NMake 构建 PCRE2:
nmake
6. 安装 PCRE2:
cmake --install .
编译 Zabbix agent
1. 下载 Zabbix 源代码归档 并将其解压到 C:\Zabbix\zabbix-8.0.0。
如果您需要从原始源码仓库生成源代码归档(例如,为了应用自定义补丁或基于最新源代码进行构建),请在 Linux 机器上运行以下命令:
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent --enable-ipv6 --prefix=`pwd`
make dist
这将创建一个源代码归档,随后可将其复制到 Windows 机器上。
2. 进入 Zabbix 构建目录并编译 Zabbix agent(或其他组件); 请确保正确指定 OpenSSL 和 PCRE2 的安装目录:
cd C:\Zabbix\zabbix-8.0.0\build\win32\project
# 启用 TLS 支持:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
# 不启用 TLS 支持:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
编译完成后,Zabbix 组件二进制文件将位于 C:\Zabbix\zabbix-8.0.0\bin\win64。
Zabbix agent 配置文件位于 C:\Zabbix\zabbix-8.0.0\conf。
要运行 agent,请将 zabbix_agent.exe 及其配置文件复制到专用文件夹(例如 C:\Zabbix\agent),然后运行 agent:
mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.0.0\conf\zabbix_agentd.win.conf C:\Zabbix\agent\
C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.win.conf -f