2 在Windows上构建Zabbix agent 2

概述

本页面演示如何在 Windows 10(64 位或 32 位)上从源代码构建 Zabbix agent 2。

32 位和 64 位版本都可以在 64 位平台上构建,但只有 32 位的 version 可以在 32 位平台上构建。

构建 Zabbix agent 2 需要:

  • MinGW 构建工具
  • Go编程语言
  • OpenSSL(用于Zabbix中的encryption功能)
  • PCRE2(Perl 兼容正则表达式;用于 Zabbix 中的正则表达式模式匹配功能)

可以使用以下方法之一构建 Zabbix agent 2:

  • 使用 vcpkg — 一种自动化方法,通过 C++ 包管理器简化依赖项管理。
  • 手动构建—一种手动方法,在编译 agent 之前需要安装所有依赖项。

::: noteimportant 在开始构建过程之前,请注意以下事项:

  • 对于execute命令,请使用具有足够权限写入受保护文件夹的用户的命令提示符。但是,在安装OpenSSLPCRE2时,请使用MSYS2终端。
  • 建议将所有源文件和构建文件夹放在 C:\Zabbix 路径下创建一个create工作目录。但是,编译后的组件应安装在 C:\Zabbix\x64(或者对于 32 位构建,安装在 C:\Zabbix\x86)。

仅返回OutputFormat格式要求结果

使用 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 可加载插件

1。下载与您的 Zabbix agent 2 version(例如,zabbix-agent2-plugin-ember-plus-7.0.0.tar.gz)匹配的 Zabbix plugin source,并将其解压到 C:\Zabbix

2。进入解压后的插件目录并编译插件:

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。

构建工具的设置

1。下载并安装 MSYS2(提供为 MSI 安装程序)。
安装期间,请确保将 C:\Zabbix\msys64 指定为安装文件夹。

2。下载并安装 Go(提供为 MSI 安装程序;请参阅当前支持的 agent-2)。
安装期间,请确保将 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 位版本)。

安装 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:.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:-Win64-350-static目录的写入权限。 否则agent会加载可能被非特权用户修改路径的SSL设置,导致潜在安全漏洞。

  • no-shared选项会使OpenSSL静态库libcrypto.lib和libssl.lib自包含,因此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

1。下载PCRE2 source archive并解压至C:-10.45目录。

2。以管理员权限打开MSYS2 MSYS终端, 然后在解压后的PCRE2目录中create一个build目录并进入该目录:

mkdir /c/Zabbix/pcre2-10.45/build
       cd /c/Zabbix/pcre2-10.45/build

3。配置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目录的构建目录中。

4。安装PCRE2:

make install
编译 Zabbix agent 2

1。下载Zabbix source archive并将其解压到 C:\Zabbix\zabbix-7.0.0 目录。

如果你需要从原始源代码仓库中generate一个源代码归档文件(例如,应用自定义补丁或从最新的源代码构建),请在已安装 GoLinux 机器上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 机器上。

2。以管理员权限打开命令提示符。 然后,进入 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 可加载插件