本页演示如何在Windows 10(64位或32位)系统上从源代码构建Zabbix agent 2。
在64位平台上可以构建32位和64位版本,但在32位平台上只能构建32位的version。
构建Zabbix agent 2需要以下组件:
您可以通过以下任一方法构建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;例如:
x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7zi686-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=x865. 下载 Zabbix source archive 并将其解压到 C:\Zabbix\zabbix-7.0.0。
6. 进入 Zabbix 构建目录(C:\Zabbix\zabbix-7.0.0\build\mingw),并 create 以下 build.bat 脚本:
:: 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:: 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%" ^
           all7. 通过执行脚本编译 Zabbix agent 2:
编译完成后,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 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 中:
插件配置 file 的路径必须在 Zabbix agent 2 配置文件的 Include 参数中指定:
此 Zabbix agent 2 构建方法适用于需要对构建环境进行完全控制,或在受限环境中无法使用 vcpkg 的用户。
本节包含手动构建 Zabbix agent 2 的说明,包括安装所需的构建工具和依赖项,然后编译 agent。
下载并安装 MSYS2(提供为 MSI 安装程序)。
       安装期间,请确保将 C:\Zabbix\msys64 指定为安装文件夹。
下载并安装 Go(提供为 MSI 安装程序;请参阅当前支持的 agent-2)。
       安装期间,请确保将 C:\Zabbix\Go 指定为安装文件夹。
下载使用 Microsoft Visual C 运行时库的 MinGW distribution;例如:
x86_64-15.  1. 0-release-win32-seh-msvcrt-rt_v12-rev0.7zi686-15.  1. 0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z然后,将其解压到 C:\Zabbix\mingw64(或 C:\Zabbix\mingw32 用于 32 位版本)。
若不需TLS支持编译Zabbix agent,请直接跳转至安装PCRE2章节。
1. 以管理员权限打开MSYS2 MSYS终端,并run以下命令:
2. 下载OpenSSL source archive并解压至C:\Zabbix\openssl-3.5.0目录。
3. 进入解压后的OpenSSL目录,并create以下build.sh脚本:
#!/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#!/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(注意此过程可能耗时较长):
下载PCRE2 source archive并解压至C:\Zabbix\pcre2-10. 45目录。
以管理员权限打开MSYS2 MSYS终端, 然后在解压后的PCRE2目录中create一个build目录并进入该目录:
# 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目录的构建目录中。
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 机器上。
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"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 可加载插件。