在CentOS 5.0上安装Zabbix Agentd 4.0

最近在安装Zabbix 4.0以替代之前的Zabbix 2.4。在公司的VOIP服务器上安装Zabbix Agentd时遇到了一些问题。最新版本的Zabbix 4.0在编译时强制依赖pcre 8.x库,但该服务器上安装的pcre只有6.6,并且无devel包安装,而CentOS 5已经停止支持,寄希望于yum安装也只是报错罢了。于是决定手动编译一份pcre。由于系统中承载着公司很重要的电话交换服务,故直接便宜还是心有疑虑,生怕新编译的pcre将系统中的旧有版本的部分文件替换,导致Asterisk无法正常工作,所以决定采用编译到特定目录的方式来安装pcre。

在下载pcre源代码编译之前最好是先去Zabbix官网看看文档,之前编译其服务器时就遇到了其依赖的mbedtls不支持最新版本的问题,而pcre官网的版本分为pcre-x.xx和pcre2-x.xx。果不其然,官网这一段文字标注了其支持的版本

参考网址: https://www.zabbix.com/documentation/4.0/zh/manual/installation/install/building_windows_agent_binaries?s[]=pcre2#%E7%BC%96%E8%AF%91_pcre

因此,应当从pcre站点下载的包为pcre-x.xx,笔者选择的版本为 pcre-8.43
下载链接:https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz

在服务器上解压后查看一下编译参数后按照此参数执行configure

 #./configure --prefix=/usr/local/pcre8 --enable-pcre8 --enable-pcre16 --enable-pcre32 --enable-utf --enable-jit --enable-unicode-properties

这其中,--enable-utf 和 --enable-unicode-properties 是Zabbix官方文档中指定需要的(可参照下图),其他参数是我自己加的(反正都是编译,干嘛不把能启用的功能模块都启用起来?)。为了防止新编译的版本将系统中原有的pcre的某些文件覆盖导致系统原有的其他软件故障,因此添加了--prefix参数来使其编译好的文件都安装到指定的目录中而不是直接放入系统。

接着,执行编译

 #make -j 8 && make install
 提示: 在多核系统中,启用-j参数可使编译使用多个核心并行编译,大大缩短编译所用时间。不过这偶尔会导致编译出错(例如在编译OpenWrt的时候)

接着,编译Zabbix Agentd,由于先前编译安装的pcre8未直接安装进系统,在程序的常规安装目录(/bin /usr/bin /lib64 /usr/lib64 /user/local/lib64等位置)是找不到刚才编译的pcre8相关文件的,因此若直接编译Zabbix Agentd同样会提示找不到pcre库,因此需要在执行Zabbix Agentd的configure时手动指定pcre库的位置为我们先前安装pcre8的位置,即 /usr/local/pcre8。 笔者使用的Zabbix_Agentd编译参数如下

 #./configure --enable-agent --enable-ipv6 --with-zlib --with-libpthread --with-iconv --with-libpcre=/usr/local/pcre8

由于是老机器,而且与Zabbix服务器同样位于公司内网,因此笔者在编译时未启用连接加密功能,如果你需要,在编译时加上 --with-mbedtls 或 --with-gnutls 即可(可能需要额外编译安装软件库)。

然后编译并创建用于运行Zabbix的zabbix用户

#make -j 8 && make install
#useradd -s /sbin/nologin zabbix

接着,试着启动Zabbix_Agentd失败,提示如下

 # service zabbix_agentd start
启动 Zabbix Agent:/usr/local/zabbix/sbin/zabbix_agentd: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
[失败]

这里提示找不到libpcre.so.1,因此需要在系统常规库目录(如/lib64 /usr/lib64等)中建立libpcre.so.1,如果系统中旧版本的libpcre也是这个文件名会比较麻烦(因为如果文件一致,那么将新版本的文件复制或是链接到lib64目录中最终将会替换旧版本的文件,就有可能导致其他软件出现兼容性问题)。最终我们在/lib64中找到了旧版本libpcre的库,不过幸好其文件名与我们新编译的libpcre8不一样是libcpre.so.0,因此我们可以直接将新编译的文件从 /usr/local/pcre8/lib中链接到这里

 #ln -s /usr/local/pcre8/lib/libpcre.so.1.2.11 /lib64/libpcre.so.1

再一次试着启动

# service zabbix_agentd start
启动 Zabbix Agent: [确定]

至此,Zabbix Agentd安装并可正常启动

 


  请注意,本站的所有文章均要求阁下在转载时注明出处和原作者,阁下转载本站文章即表示阁下同意并遵守此规程,除非特别注明转载出处,否则文章即为其发布者所著。本站及文章作者保留文章的著作权并有权在阁下违反上述规程时予以追究。

本文链接地址: 在CentOS 5.0上安装Zabbix Agentd 4.0

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*