概述
本节演示如何从包含或不包含TLS的源代码安装Zabbix agent二进制文件(Windows)
版本 zabbix-5.0.15
1.编译支持加密的Zabbix
为了支持加密,Zabbix必须编译并链接到受支持的加密库之一:
-
GnuTLS - 从版本3.1.18
-
OpenSSL - 版本1.0.1, 1.0.2, 1.1.0, 1.1.1
-
LibreSSL - 测试版本 2.7.4, 2.8.2:
-
LibreSSL 2.6.x 是不支持的
-
LibreSSL支持作为OpenSSL的兼容替代品; 新的’ tls_*() ‘ libressl特定的API函数没有被使用。使用LibreSSL编译的Zabbix组件将不能使用PSK,只能使用证书。 通过指定相应的选项来“configure”脚本来选择库:
通过指定“configure”脚本的选项来选择库:
-
–with-gnutls[=DIR]
-
–with-openssl[=DIR] (也用于LibreSSL)
例如:要用OpenSSL配置server和agent的源文件,你可以使用如下方法:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl
不同的Zabbix组件可以使用不同的加密库进行编译 (例如,服务器上有OpenSSL,代理上有GnuTLS)。
注意:如果您计划使用预共享密钥(PSK),请考虑在使用PSK的Zabbix组件中使用GnuTLS或OpenSSL 1.1.0(或更新)库。
-
GnuTLS和OpenSSL 1.1.0库 支持PSK密码套件 向前兼容密码.
-
OpenSSL库的旧版本(1.0.1,1.0.2c)也支持PSK,但可用的PSK密码套件不支持向前兼容密码。
安装相关依赖组件
1.安装OpenSSL
注意:对于较早的OpenSSL版本(1.0.1,1.0.2,1.1.0),对于LibreSSL和如果在没有PSK支持的情况下编译OpenSSL,默认值是不同的。
1.1.下载安装包进行安装
1.1.1.下载安装包
Window 的openssl的安装包下载地址:http://slproweb.com/products/Win32OpenSSL.html
http://slproweb.com/download/Win64OpenSSL-1_1_1s.msi
注:这里使用OpenSSL 1.1.1,带Light的版本包含最常用的基本功能,如需全功能请安装不带Light的版本
1.1.2.双击安装
默认安装,最后完成时候有个捐款,直接取消,点击finish即可。
1.1.3.添加环境变量
找到安装openssl的位置,如C:\Program Files\OpenSSL-Win64\bin,在系统变量中Path变量后点击编辑
1.4 验证
F:\zabbix-5.0.15\build\win32\project>Openssl version
OpenSSL 1.1.1s 1 Nov 2022
1.2.官网下载编译安装
本过程需要先安装perl、vs等软件,然后才能编译openssl
2.编译PCRE
2.1.下载源码并解压缩
2.1.1.下载源码
从pcre.org 8.XX版下载PCRE库(自Zabbix 4.0起为强制性库):https://sourceforge.net/projects/pcre/files/pcre/8.41/
注:不是pcre2
2.1.2. 提取到目录 F:\pcre-8.41
2.2.使用cmake-gui 构建
2.2.1.下载Cmake
从https://cmake.org/download/安装CMake,在安装过程中选择:并确保cmake\bin在您的路径上(经过测试的版本3.9.4)
2.2.2.执行Configure和Generate
打开命令行窗口,例如 VS 2017的x64本机工具命令提示符,并从该Shell环境运行cmake-gui。 不要尝试从Windows“开始”菜单启动Cmake,因为这可能会导致错误
-
输入 E:\pcre-8.41 和 E:\pcre-8.41\build 作为源目录,点击“Configure”按钮
-
选择对应的IDE/build工具,为该项目指定生成器时,选择“ NMake Makefiles”
-
GUI将列出几个配置选项。 确保选择以下选项:
-
PCRE_SUPPORT_UNICODE_PROPERTIES ON
-
PCRE_SUPPORT_UTF ON、
-
CMAKE_BUILD_TYPE Release
-
CMAKE_INSTALL_PREFIX F:\pcre-8.41-install
-
再次点击“Configure”。 相邻的“Generate”按钮现在应该处于active状态。此时点击“Generate”
注:如果发生错误,建议您在尝试重复CMake构建过程之前删除CMake缓存。 在CMake GUI中,可以通过选择“File > Delete Cache”来删除缓存
2.3.使用nmake执行install
- 现在,构建目录应该包含一个可用的构建系统-Makefile
F:\pcre-8.41\build>dir
驱动器 F 中的卷没有标签。
卷的序列号是 A65F-86F2
F:\pcre-8.41\build 的目录
2022/12/17 11:40 <DIR> .
2022/12/17 11:39 <DIR> ..
2022/12/17 11:40 19,101 CMakeCache.txt
2022/12/17 11:40 <DIR> CMakeFiles
2022/12/17 11:40 8,804 cmake_install.cmake
2022/12/17 11:40 1,389 config.h
2022/12/17 11:40 157 CTestCustom.ctest
2022/12/17 11:40 565 CTestTestfile.cmake
2022/12/17 11:40 37,223 Makefile
2022/12/17 11:39 32,383 pcre.h
2022/12/17 11:39 6,957 pcrecpparg.h
2022/12/17 11:39 7,848 pcre_chartables.c
2022/12/17 11:40 219 pcre_grep_test.sh
2022/12/17 11:39 6,492 pcre_stringpiece.h
2022/12/17 11:40 330 pcre_test.bat
2022/12/17 11:40 173 pcre_test.sh
13 个文件 121,641 字节
3 个目录 49,290,637,312 可用字节
- 打开命令行窗口,例如 VS 2017的x64本机工具命令提示符,运行NMake命令:
F:\pcre-8.41\build>nmake install
Microsoft (R) 程序维护实用工具 14.16.27048.0 版
版权所有 (C) Microsoft Corporation。 保留所有权利。
Scanning dependencies of target pcre
[ 2%] Building C object CMakeFiles/pcre.dir/pcre_byte_order.c.obj
.......
编译zabbix_get,zabbix_sender和zabbix_agent
1.下载下载源代码并解压缩
1.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
1.2.解压到指定路径
Windows机器上为zabbix-5.0.0.tar.gz,解压源代码路径:E:\zabbix-5.0.15
2.使用OpenSSL编译Zabbix
打开命令行窗口,例如 VS 2017 RC的x64本机工具命令提示符。转到 F:\zabbix-5.0.15\build\win32\project,
以下步骤将帮助您从MS Windows 11(64位)上的源代码编译Zabbix。 当使用/不支持TLS编译Zabbix时,唯一的不同是在步骤4中
2.1.不使用TLS:
2.1.1.生成zabbix_get,zabbix_sender和zabbix_agent
F:\zabbix-5.0.15\build\win32\project>nmake /K PCREINCDIR=F:\pcre-8.41-install\include PCRELIBDIR=F:\pcre-8.41-install\lib
2.1.2.清理生成
F:\zabbix-5.0.15\build\win32\project> nmake clean /K PCREINCDIR=F:\pcre-8.41-install\include PCRELIBDIR=F:\pcre-8.41-install\lib
2.2.使用TLS:
2.2.1.生成zabbix_get,zabbix_sender和zabbix_agent
#独立生成 sender_dll
F:\zabbix-5.0.15\build\win32\project>nmake /K -f Makefile_sender_dll TLS=openssl TLSINCDIR="C:\Program Files\OpenSSL-Win64\include" TLSLIBDIR="C:\Program Files\OpenSSL-Win64\lib" PCREINCDIR=F:\pcre-8.41-install\include PCRELIBDIR=F:\pcre-8.41-install\lib
#逐一生成 get,sender,agent
F:\zabbix-5.0.15\build\win32\project>nmake /K -f Makefile_get TLS=openssl TLSINCDIR="C:\Program Files\OpenSSL-Win64\include" TLSLIBDIR="C:\Program Files\OpenSSL-Win64\lib" PCREINCDIR=F:\pcre-8.41-install\include PCRELIBDIR=F:\pcre-8.41-install\lib
F:\zabbix-5.0.15\build\win32\project>nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\Program Files\OpenSSL-Win64\include" TLSLIBDIR="C:\Program Files\OpenSSL-Win64\lib" PCREINCDIR=F:\pcre-8.41-install\include PCRELIBDIR=F:\pcre-8.41-install\lib
F:\zabbix-5.0.15\build\win32\project>nmake /K -f Makefile_agent TLS=openssl TLSINCDIR="C:\Program Files\OpenSSL-Win64\include" TLSLIBDIR="C:\Program Files\OpenSSL-Win64\lib" PCREINCDIR=F:\pcre-8.41-install\include PCRELIBDIR=F:\pcre-8.41-install\lib
# 一次性生成
F:\zabbix-5.0.15\build\win32\project>nmake /K TLS=openssl TLSINCDIR="C:\Program Files\OpenSSL-Win64\include" TLSLIBDIR="C:\Program Files\OpenSSL-Win64\lib" PCREINCDIR=F:\pcre-8.41-install\include PCRELIBDIR=F:\pcre-8.41-install\lib
2.2.2.清理生成
F:\zabbix-5.0.15\build\win32\project>nmake clean /K TLS=openssl TLSINCDIR="C:\Program Files\OpenSSL-Win64\include" TLSLIBDIR="C:\Program Files\OpenSSL-Win64\lib" PCREINCDIR=F:\pcre-8.41-install\include PCRELIBDIR=F:\pcre-8.41-install\lib
2.3.查看编译结果
新的二进制文件位于F:\zabbix-5.0.15\bin中。 由于OpenSSL是使用“ no-shared”选项编译的,因此Zabbix二进制文件本身包含OpenSSL,并且可以将其复制到其他没有OpenSSL的计算机上
F:\zabbix-5.0.15\bin\win64>dir /S/B
F:\zabbix-5.0.15\bin\win64\dev
F:\zabbix-5.0.15\bin\win64\zabbix_agentd.exe
F:\zabbix-5.0.15\bin\win64\zabbix_agentd.pdb
F:\zabbix-5.0.15\bin\win64\zabbix_get.exe
F:\zabbix-5.0.15\bin\win64\zabbix_sender.exe
F:\zabbix-5.0.15\bin\win64\dev\zabbix_sender.dll
F:\zabbix-5.0.15\bin\win64\dev\zabbix_sender.h
F:\zabbix-5.0.15\bin\win64\dev\zabbix_sender.lib
3.使用LibreSSL编译Zabbix
该过程类似于使用OpenSSL进行编译,但是您需要对 build\win32\project 目录中的文件进行一些小的更改:
在“Makefile_tls.inc”文件中删除“/DHAVE_OPENSSL_WITH_PSK”,
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK #位于13行
修改成
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
在“Makefile_common.inc” add “/NODEFAULTLIB:LIBCMT”
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb #位于37行
修改成
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT
安装Agent到window服务,
1. 执行安装命令 :
F:\zabbix-5.0.15\bin\win64>zabbix_agentd.exe -c C:\zabbix_agent\conf\zabbix_agentd.win.conf -i
zabbix_agentd.exe [3828]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [3828]: event source [Zabbix Agent] installed successfully
2. 运行测试
安装成功后,执行运行命令:
F:\zabbix-5.0.15\bin\win64>zabbix_agentd.exe -c C:\zabbix_agent\conf\zabbix_agentd.win.conf -s
zabbix_agentd.exe [26004]: service [Zabbix Agent] started successfully
注意:如果执行CMD不是用管理员权限打开,看下以下信息,代表代安装成功
3.检查服务列表,看是否安装成功!
4.查看端口是否在处理监听状态
F:\zabbix-5.0.15\bin\win64>netstat -an | find "100"
TCP 0.0.0.0:10050 0.0.0.0:0 LISTENING
TCP [::]:10050 [::]:0 LISTENING
卸载安装
F:\zabbix-5.0.15\bin\win64>zabbix_agentd.exe -c C:\zabbix_agent\conf\zabbix_agentd.win.conf -d
zabbix_agentd.exe [34180]: service [Zabbix Agent] uninstalled successfully
zabbix_agentd.exe [34180]: event source [Zabbix Agent] uninstalled successfully