1 在Windows上构建Zabbix agent

概述

本页面演示如何在 Windows 10(64-bit)上从源代码构建 Zabbix agent。

这些说明适用于支持 Visual Studio 2022 的 Windows 版本。

构建 Zabbix agent 需要以下组件:

  • C 编译器(包含在 Build Tools for Visual Studio 2022 中)
  • OpenSSL(用于 Zabbix 的 encryption 功能)
  • PCRE2(Perl 兼容正则表达式;用于 Zabbix 中的正则表达式模式匹配功能)

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

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

根据您的监控需求,可能还需要额外的库。有关更多信息,请参见 agent

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

  • 要 execute 命令,请使用 x64 Native Tools Command Prompt(包含在 Build Tools for Visual Studio 2022 中),并以具有向受保护文件夹写入权限的用户身份运行。
  • 建议在 C:\Zabbix 为所有源代码文件和构建文件夹 create 一个工作目录。但是,编译后的组件应安装在 C:\Program Files\Zabbix\x64 中。

使用 vcpkg 构建 Zabbix agent

本节包含使用vcpkg构建Zabbix agent的指导说明,该包管理器可简化依赖项管理以及与C++项目的集成。

1. 下载并安装Build Tools for Visual Studio 2022。 安装过程中,请确保选择使用C++的桌面开发工作负载,其中包含使用vcpkg构建agent所需的工具:

  • C编译器(Microsoft Visual C++)
  • NMake命令行工具
  • vcpkg包管理器
  • x64本机工具命令提示符

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 source archive并将其解压到C:\Zabbix\zabbix-7.0.0

4. 导航到Zabbix构建目录(C:\Zabbix\zabbix-7.0.0\build\win32\project)并create以下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-7.0.0\bin\win64。 Zabbix agent的配置文件file位于C:\Zabbix\zabbix-7.0.0\conf

要runagent,请copyzabbix_agent.exe及其配置文件file到专用文件夹(例如C:\Zabbix\agent),然后runagent:

mkdir C:\Zabbix\agent
       copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
       copy C:\Zabbix\zabbix-7.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 本机工具命令提示符
安装 OpenSSL

若要在不支持 TLS 的情况下编译 Zabbix agent,请转至 安装 PCRE2 部分。

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

2. 安装 Text::Template Perl 模块:

cpanm Text::Template

3. 验证在安装 Strawberry Perl 期间是否已编译 Netwide Assembler(NASM;编译 OpenSSL 所需):

nasm -v
       # NASM version 2.16.01 compiled on May  3 2024

如果未编译 NASM,请手动安装。有关更多信息,请参阅 NASM documentation

4. 下载 OpenSSL source archive 并将其解压到 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:\zabbixC:\openssl-64bit),请确保撤销该目录对非管理员用户的写入权限。
否则,agent 将从非特权用户可修改的路径加载 SSL 设置,从而可能导致潜在的安全漏洞。

  • no-shared 选项使 libcrypto.lib 和 libssl.lib OpenSSL 静态库自包含,因此 Zabbix 二进制文件包含 OpenSSL,而无需外部 DLL。
    这意味着可以将 Zabbix 二进制文件复制到其他 Windows 机器而无需 OpenSSL 库;但是,当新的 OpenSSL 修补版本 version 发布时,需要重新编译 Zabbix agent。
  • 不使用 no-shared 选项时,Zabbix 在运行时依赖 OpenSSL DLL。
    这意味着 OpenSSL 更新可能不需要重新编译 Zabbix agent;但是,将其复制到其他机器时,也必须复制 OpenSSL DLL。

有关其他 OpenSSL 配置选项的更多信息,请参阅 OpenSSL documentation

6. 编译 OpenSSL 并运行 run 测试(注意这可能需要一些时间):

请在无管理员权限的情况下运行测试;否则可能导致意外结果或安全风险。
如果某些测试失败,请参阅 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作为安装目录,并勾选将CMake添加到PATH环境变量选项。

2。下载PCRE2 source archive并将其解压至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构建流程前deleteCMake缓存。 缓存文件(CMakeCachecache.txt)位于解压后PCRE2目录的构建目录中。

5。使用NMake构建PCRE2:

nmake

6。安装PCRE2:

cmake --install .
编译 Zabbix agent

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

如果需要从原始源代码仓库generate源码归档文件(例如应用自定义补丁或基于最新源代码构建),请在Linux机器上run以下命令:

git clone https://git.zabbix.com/scm/zbx/zabbix.git
       cd zabbix
       ./bootstrap.sh
       ./configure --enable-agent --enable-ipv6 --prefix=`pwd`
       make dist

这将create一个源代码归档文件,随后可将其复制到Windows机器上。

2。导航至Zabbix构建目录并编译Zabbix agent(或其他组件); 请确保正确指定OpenSSL和PCRE2的安装目录:

cd C:\Zabbix\zabbix-7.0.0\build\win32\project
       
       # With TLS support:
       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"
       
       # Without TLS support:
       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-7.0.0\bin\win64中。 Zabbix agent配置file位于C:\Zabbix\zabbix-7.0.0\conf中。

要runagent,需copy zabbix_agent.exe及其配置file到专用文件夹(例如C:\Zabbix\agent),然后runagent:

mkdir C:\Zabbix\agent
       copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
       copy C:\Zabbix\zabbix-7.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