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:

      1. e:\openssl-1.1.1> nasm --version
      2. NASM version 2.13.01 compiled on May 1 2017
  6. 例如,配置OpenSSL:

    1. 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,运行安装,测试:

    1. e:\openssl-1.1.1> nmake
    2. e:\openssl-1.1.1> nmake test
    3. ...
    4. All tests successful.
    5. Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr + 0.61 sys = 1.28 CPU)
    6. Result: PASS
    7. 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命令:

    1. E:\pcre-8.41\build> nmake install

编译Zabbix

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

  1. 在Linux机器上,检查GIT的来源:

    1. $ git clone https://git.zabbix.com/scm/zbx/zabbix.git
    2. $ cd zabbix/
    3. $ git checkout 5.0.1 -b 5.0.1 # replace 5.0.1 with the latest release available
    4. $ ./bootstrap.sh
    5. $ ./configure --enable-agent --enable-ipv6 --prefix=`pwd`
    6. $ make dbschema
    7. $ 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:

      1. 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:

      1. 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
      2. 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
      3. 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. 即找到

    1. CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK

    并替换为

    1. CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
  • Makefile_common.inc 中添加 /NODEFAULTLIB:LIBCMT. 即找到

    1. /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb

    并替换为

    1. /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT