这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

3 在Windows上安装Zabbix agent

概述

本节演示如何从包含或不包含TLS的源代码安装Zabbix agent二进制文件(Windows)

安装OpenSSL

以下步骤将帮助您从MS Windows 10(64位)上的源代码编译OpenSSL

  1. 要安装OpenSSL,您将需要在Windows计算机上:
    1. C compiler (e.g. VS 2017 RC),
    2. NASM (https://www.nasm.us/),
    3. Perl (e.g. Strawberry Perl from http://strawberryperl.com/),
    4. Perl module Text::Template (cpan Text::Template).
  2. 从https://www.openssl.org/获取OpenSSL源。 这里使用OpenSSL 1.1.1
  3. 解压缩OpenSSL源,例如在E:\openssl-1.1.1
  4. 打开命令行窗口,例如 VS 2017 RC的x64本机工具命令提示符
  5. 转到OpenSSL源目录,例如E:\openssl-1.1.1
    1. 验证是否可以找到NASM:e:\openssl-1.1.1> nasm --version NASM version 2.13.01 compiled on May 1 2017
  6. 例如,配置OpenSSL:e:\openssl-1.1.1> perl E:\openssl-1.1.1\Configure VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static
    • 注意选项“ no-shared”:如果使用“ no-shared”,则OpenSSL静态库libcrypto.lib和libssl.lib将是“self-sufficient”,并且所产生的Zabbix二进制文件本身将包括OpenSSL,而无需外部 OpenSSL DLLs。 优点:Zabbix二进制文件无需OpenSSL库即可复制到其他Windows计算机。 缺点:发布新的OpenSSL错误修正版本时,Zabbix agent需要重新编译并重新安装
    • 如果不使用“ no-shared”,则静态库libcrypto.lib和libssl.lib将在运行时使用OpenSSL DLLs。 优点:发布新的OpenSSL错误修正版本时,可能无需升级Zabbix agent即可仅升级OpenSSL DLLs。 缺点:将Zabbix agent复制到另一台计算机也需要复制OpenSSL DLLs
  7. 编译OpenSSL,运行安装,测试:e:\openssl-1.1.1> nmake e:\openssl-1.1.1> nmake test ... All tests successful. Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr + 0.61 sys = 1.28 CPU) Result: PASS e:\openssl-1.1.1> nmake install_sw'install_sw'仅安装软件组件(即库,头文件,但没有文档)。 如果需要所有内容,请使用“ nmake install”

编译PCRE

  1. 从pcre.org 8.XX版下载PCRE库(自Zabbix 4.0起为强制性库);不是pcre2(ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.zip
  2. 提取到目录 E:\pcre-8.41
  3. 从https://cmake.org/download/安装CMake,在安装过程中选择:并确保cmake\bin在您的路径上(经过测试的版本3.9.4)
  4. 创建一个新的空构建目录,最好是源目录的子目录。 例如, E:\pcre-8.41\build
  5. 打开命令行窗口,例如 VS 2017的x64本机工具命令提示符,并从该Shell环境运行cmake-gui。 不要尝试从Windows“开始”菜单启动Cmake,因为这可能会导致错误
  6. 输入 E:\pcre-8.41E:\pcre-8.41\build 作为源目录
  7. 点击“Configure”按钮
  8. 为该项目指定生成器时,选择“ NMake Makefiles”
  9. 创建一个新的空安装目录。 例如, E:\pcre-8.41-install
  10. 然后,GUI将列出几个配置选项。 确保选择以下选项:
    • PCRE_SUPPORT_UNICODE_PROPERTIES ON
    • PCRE_SUPPORT_UTF ON
    • CMAKE_INSTALL_PREFIX E:\pcre-8.41-install
  11. 再次点击“Configure”。 相邻的“Generate”按钮现在应该处于active状态。
  12. 点击“Generate”
  13. 如果发生错误,建议您在尝试重复CMake构建过程之前删除CMake缓存。 在CMake GUI中,可以通过选择“File > Delete Cache”来删除缓存
  14. 现在,构建目录应该包含一个可用的构建系统-Makefile
  15. 打开命令行窗口,例如 VS 2017的x64本机工具命令提示符,并导航到上面提到的Makefile
  16. 运行NMake命令: E:\pcre-8.41\build> nmake install

编译Zabbix

以下步骤将帮助您从MS Windows 10(64位)上的源代码编译Zabbix。 当使用/不支持TLS编译Zabbix时,唯一的不同是在步骤4中

  1. 在Linux机器上,检查GIT的来源:$ git clone https://git.zabbix.com/scm/zbx/zabbix.git $ cd zabbix/ $ git checkout 5.0.1 -b 5.0.1 # replace 5.0.1 with the latest release available $ ./bootstrap.sh $ ./configure --enable-agent --enable-ipv6 --prefix=`pwd` $ make dbschema $ make dist
  2. 复制并解压缩存档,例如 Windows机器上为zabbix-5.0.0.tar.gz
  3. 假设源位于 e:\zabbix-5.0.0中。 打开命令行窗口,例如 VS 2017 RC的x64本机工具命令提示符。转到 E:\zabbix-5.0.0\build\win32\project
  4. 编译zabbix_get,zabbix_sender和zabbix_agent
    • 不使用TLS: E:\zabbix-5.0.0\build\win32\project> nmake /K PCREINCDIR=E:\pcre-8.41-install\include PCRELIBDIR=E:\pcre-8.41-install\lib
    • 使用TLS: E:\zabbix-5.0.0\build\win32\project> nmake /K -f Makefile_get TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCREINCDIR=E:\pcre-8.41-install\include PCRELIBDIR=E:\pcre-8.41-install\lib E:\zabbix-5.0.0\build\win32\project> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib" PCREINCDIR=E:\pcre-8.41-install\include PCRELIBDIR=E:\pcre-8.41-install\lib E:\zabbix-5.0.0\build\win32\project> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCREINCDIR=E:\pcre-8.41-install\include PCRELIBDIR=E:\pcre-8.41-install\lib
  5. 新的二进制文件位于e:\zabbix-5.0.0\bin\win64中。 由于OpenSSL是使用“ no-shared”选项编译的,因此Zabbix二进制文件本身包含OpenSSL,并且可以将其复制到其他没有OpenSSL的计算机上

使用LibreSSL编译Zabbix

该过程类似于使用OpenSSL进行编译,但是您需要对 build\win32\project 目录中的文件进行一些小的更改:

  *''Makefile_tls'' 中删除 ''/DHAVE_OPENSSL_WITH_PSK''. 即找到 <code>

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK</code>并替换为 CFLAGS = $(CFLAGS) /DHAVE_OPENSSL

  *''Makefile_common.inc'' 中添加 ''/NODEFAULTLIB:LIBCMT''. 即找到 <code>

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb</code>并替换为 /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT