准备工作
默认情况下,Zabbix官方包中没有包含TLS功能。
在开始编译之前要准备以下内容:
以下是下载好的文件:
VC、openssl和cmake下载后直接安装即可,但在安装cmake的时候要注意选择将path应用到所有用户:
Add CMake to system PATH for all users
而pcre和zabbix源码只用一次,可以解压到任意位置。为了在cmd窗口中输入更少的字符,放置在以下路径中:C:\temp
安装完VS后,在开始菜单中找到以下内容:
如果编译32位和64位的应用分别使用以下工具:
- x32:VS2015 x86 Native Tools Command Prompt
- x64:VS2015 x64 Native Tools Command Prompt
在这里使用64位的工具。
编译
PCRE
先整合pcre,在pcre根目录中新建一个build文件夹并进入:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>cd c:\temp\pcre-8.41
c:\temp\pcre-8.41>mkdir build
c:\temp\pcre-8.41>cd build
先cmake:
c:\temp\pcre-8.41\build>cmake -G "Visual Studio 14 2015 Win64" -DPCRE_SUPPORT_UNICODE_PROPERTIES=ON -DPCRE_SUPPORT_UTF=ON -DCMAKE_C_FLAGS_RELEASE:string="/MT" ..
然后编译:
c:\temp\pcre-8.41\build>msbuild PCRE.sln /property:Configuration="Release"
最终结果只要没有错误即可,警告信息可以忽略。
修改文件
处理完pcre后进入zabbix源码目录,先修改以下文件:
C:\temp\zabbix-3.4.2\build\win32\project\resource.rc
将内容 #include "afxres.h修改为 #include "windows.h"
然后修改以下文件:
C:\temp\zabbix-3.4.2\build\win32\project\Makefile_sender_dll
将内容 ..\..\..\src\zabbix_sender\win32\zabbix_sender.o修改为 ..\..\..\src\zabbix_sender\zabbix_sender.o
编译agent
先进入相关文件夹:
C:\>cd C:\temp\zabbix-3.4.2\build\win32\project
然后运行nmake:
#64位
C:\temp\zabbix-3.4.2\build\win32\project>nmake CPU=AMD64 TLS=openssl TLSINCDIR="C:\OpenSSL-Win64\include" TLSLIBDIR="C:\OpenSSL-Win64\lib" PCREINCDIR="C:\temp\pcre-8.41" PCRELIBDIR="C:\temp\pcre-8.41\build\Release"
#32位
C:\temp\zabbix-3.4.2\build\win32\project>nmake CPU=i386 TLS=openssl TLSINCDIR="C:\OpenSSL-Win32\include" TLSLIBDIR="C:\OpenSSL-Win32\lib" PCREINCDIR="C:\temp\pcre-8.41" PCRELIBDIR="C:\temp\pcre-8.41\build\Release"
完成后即可在以下路径找到相关文件:C:\temp\zabbix-3.4.2\bin\win64
openssl
最后还需要将openssl的几个动态链接库复制到zabbix agent文件目录中:
- C:\OpenSSL-Win64\bin\msvcr120.dll
- C:\OpenSSL-Win64\libcrypto-1_1-x64.dll
- C:\OpenSSL-Win64\libssl-1_1-x64.dll
完成后的文件如下:
至此,所有编译工作均已完成。现在只需要将win64这个文件夹放置需要使用zabbix监控的windows系统中即可。
使用
首先将win64这个文件夹重命名并放置到适当位置,我选择的路径如下:
#agent路径
C:\zabbix_agents\bin\win64\zabbix_agentd.exe
#配置文件路径
C:\zabbix_agents\conf\zabbix_agentd.conf
#TLS配置信息
TLSConnect=cert
TLSAccept=cert
TLSCAFile=C:\zabbix_agents\crt\ca.crt
TLSCertFile=C:\zabbix_agents\crt\win10.t.com.crt
TLSKeyFile=C:\zabbix_agents\crt\win10.t.com.key
如果你已经安装过zabbix agent服务,那么需要先删除旧的服务。以管理员权限打开CMD窗口并输入以下内容即可删除旧服务:
然后通过以下命令重新安装:
c:\zabbix_agents\bin\win64\zabbix_agentd.exe --config c:\zabbix_agents\conf\zabbix_agentd.conf -i
然后放置数字证书到指定位置,再打开服务窗口启动服务:
参考文件
Windows Zabbix Agent Binary is not compiled with TLS Support(https://support.zabbix.com/browse/ZBXNEXT-3047?focusedCommentId=242351&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-242351)