zabbix是一个基于WEB页面的分布式系统监控方案,能够监控各类资产并提供灵活的通知功能,同时能够运行在各种流行系统中。
zabbix分为zabbix_server和zabbix_agent端,zabbix_server可以单独远程监控服务,也可以在被监控主机安装zabbix_agent用来采集数据并定时推送到zabbix_server中。
环境要求:
需要一套已经在linux服务器上部署完毕的zabbix监控;
服务器需要安装python环境;
服务器具备rsyslog日志服务。
操作步骤
step1 开启并配置zabbix监控数据转存到本地的功能
step2 重启zabbix服务
step3 重启完毕后查看配置的路径下是生成存放监控日志的文件
这些文件中只需要关注 history-history-syncer- 前缀开头的文件。
step4 然后配置rsyslog 将日志读取到local3中,并配置相关规则写入到本地
首先使用rsyslog的imfile模块,将本地文件读取到local3中:
然后根据不同的日志类型转存到不同的配置文件中,参考以下截图配置即可。
step5 同时,由于读取这些文件的用户并不一定具备管理原权限,因此需要在/etc/rsyslog.conf文件中配置umask,确保这些日志其他用户也能够读取
step6 此时在配置的路径下已经可以看到相关的日志文件了,但是这些文件字段并不符合 使用要求,需要进一步处理
首先需要在每行日志前加上,原始的日志中并不存在时间戳。
因此在rsyslog日志中加上如下配置:
(排除本地日志,并将每行日之前加上时间戳)
此时所有的日志都会读写到/var/log/message的日志中,为防止空间被无用文件占 用需要将local3日志从message日志中剔除,找到message的日志并修改成如下格式。
此时时间戳问题已解决,需要解决字段问题,因此编写python在后台执行读取原始日志合并字段,并将日志转存到同目录的新日志中。同时在脚本中添加偏移量相关的配置,每次读取日志是则打上标记,防止程序异常退出导致需要重新读写日志。
脚本如下:
将脚本放在后台执行,可以看到日志字段已经成功合并,并转存到对应的目录下。
至此配置结束。