CentOS 7安装NXLog服务
NXLog是一个跨平台日志传输插件,支持linux、windows平台的大部分系统日志及常见的web日志,支持tcp、udp、http(s)等协议传输。本文介绍NXLog在CentOS 7服务器上的安装,以及运行om_dbi/im_dbi所需插件的安装。
操作系统环境:CentOS Linux release 7.6.1810 (Core)
NXLog版本:nxlog-ce-2.10.2150
一、安装NXLog
由于yum中没有直接提供NXLog,因此需要在https://nxlog.co/products/nxlog-community-edition/download下载对应操作系统的rpm后,上传至服务器进行安装,当然也可以直接利用wget下载安装。。
//下载路径 # cd /usr/local/ //下载rpm # wget https://nxlog.co/system/files/products/files/348/nxlog-ce-2.10.2150-1_rhel7.x86_64.rpm
NXLog安装依赖apr和libdbi,如果未安装会报如下错误。
# rpm -ivh nxlog-ce-2.10.2150-1_rhel7.x86_64.rpm 错误:依赖检测失败: apr >= 1.2 被 nxlog-ce-2.10.2150-1.x86_64 需要 libapr-1.so.0()(64bit) 被 nxlog-ce-2.10.2150-1.x86_64 需要 libdbi >= 0.8.1 被 nxlog-ce-2.10.2150-1.x86_64 需要 libdbi.so.0()(64bit) 被 nxlog-ce-2.10.2150-1.x86_64 需要
通过yum安装apr和libdbi
# yum install apr 软件包 apr.x86_64.0.1.4.8-5.el7 将被 安装 ... # yum install libdbi 软件包 libdbi.x86_64.0.0.8.4-6.el7 将被 安装 ...
依赖组件安装完成后,再安装NXLog就成功了
# rpm -ivh nxlog-ce-2.10.2150-1_rhel7.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:nxlog-ce-2.10.2150-1 ################################# [100%]
安装完成后,查看程序安装路径位于/usr/bin/nxlog,配置文件位于/etc/nxlog.conf,至此就安装完毕了。
# whereis nxlog
nxlog: /usr/bin/nxlog /etc/nxlog.conf /usr/libexec/nxlog
二、libdbi及驱动的安装
本文的实际场景需要将通过syslog获取的日志同时存储到文件和数据库MySQL,同时需要转发到其他的syslog服务器,因此需要在配置文件中使用到im_udp、om_file、om_udp和om_dbi几个模块。根据官方文档说明, 在linux系统中,im_dbi和om_dbi模块依赖于libdbi库,而在windows环境下im_odbc和om_odbc模块可提供原生的数据库访问,但是只有NXLog的企业版才支持(CE版不支持)。
libdbi需要通过数据库驱动程序来访问对应的数据库,而在CentOS环境下,虽然已经安装了libdbi,但是其中并不包含有任何驱动,因此需要进行安装。
The im_dbi and om_dbi modules support GNU/Linux only because of the libdbi library. The im_odbc and om_odbc modules provide native database access on Windows (available only in NXLog Enterprise Edition).
libdbi needs drivers to access the database engines. These are in the libdbd-* packages on Debian and Ubuntu. CentOS 5.6 has a libdbi-drivers RPM package, but this package does not contain any driver binaries under /usr/lib64/dbd. The drivers for both MySQL and PostgreSQL are in libdbi-dbd-mysql. If these are not installed, NXLog will return a libdbi driver initialization error.
# yum install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
三、修改配置文件,启动NXLog
NXLog的配置文件位于/etc/nxlog.conf,可参考官方手册对其中的各个模块进行编辑。
配置完成后,通过以下方法启动、停止服务。
systemctl start nxlog //启动服务 systemctl stop nxlog //停止服务 systemctl enable nxlog //开机启动服务 systemctl status nxlog //查看服务状态,显示active(running)表明服务已经运行了
四、防火墙中加入514端口(UDP/TCP)
# firewall-cmd --permanent --add-port=514/udp # firewall-cmd --permanent --add-port=514/tcp
如果用不到tcp可以不添加tcp的,添加端口后需要重启防火墙。
五、关于libdbi及驱动安装的弯路
因为需要安装libdbi的驱动,之前通过yum安装的libdbi的版本为0.8.4,在sourceforge上查询到其最新版本为0.9.0,因此想更新一下。
而将文件包下载后放到服务器上,在./configure时,一直提示“Invalid libdbi directory - include files not found.”。查找了几种可能性:
可能性1:autoconf的版本太高,libdbi只支持autoconf-2.13版本,在其官方文档末尾 http://libdbi-drivers.sourceforge.net/docs/dbd_mysql.pdf 中有提及。
可能性2:dbd_mysql.c的第154行中的错误代码,在 https://sourceforge.net/p/libdbi/mailman/libdbi-users/ 的用户邮件中有反应这个问题。
然而上述2种方法都没有奏效,最后还是在参考资料4中找到了类似安装libdbis mysql drivers的方法,成功解决。
参考资料: