vlambda博客
学习文章列表

我说zabbix日志监控

首先,我要感慨 真是好记性不如乱笔头!


网上有很多关于zabbix日志的,而我写这篇分享是纯粹因为下午完善了一个脚本,加入了写日志部分,顺便就把日志加入了监控。而在添加监控项的时候,我查阅了几年前写的文档,发现了有更好的实现方法,可以提升日志采集效率,减少磁盘空间……还是惊讶多年后会再次更新这个文档!

因为很多企业和运维人员都还在大规模使用zabbix,这里我就把zabbix日志监控的实践分享一下:


1.懒人方法

log[文本路径],如:

log[/var/log/messages]

log[c:\1.txt]


触发器表达式写法:

{主机名:key.函数(参数)}<表达式>


日志关键字告警触发器写法实例:

/var/log/messages日志中出现Failed错误关键字

{WebServer:log[/var/log/messages].str(Failed)}=1

and

{WebServer:log[/var/log/messages].nodata(300)}=0


这种方式触发器的时候才体现了匹配关键字,会导致整个日志文件内容都会被采集入库,试想一个tomcat的catalina.out的日志……大大消耗了zabbix-db的磁盘空间。


2.推荐方法

log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]


推荐添加监控项时,不要偷懒,通过业务梳理,把第二个参数regexp的关键字加上,如log[/var/log/messages,"(error|failed)",,,,],则匹配到预设关键字的日志内容才会被采集入库,大大减少了日志内容占用的磁盘空间。


item表达式:

log[/tomcat/logs/catalina.out,"StackOverflowError|OutOfMemoryError",,,,]


触发器:

({Templates log:log[/tomcat/logs/catalina.out,"StackOverflowError|OutOfMemoryError",,,,].regexp(StackOverflowError|OutOfMemoryError)}<>0) 

and

({Templates log:log[/tomcat/logs/catalina.out,"StackOverflowError|OutOfMemoryError",,,,].nodata(300)}=0)


当然,现在使用ES收集日志已经成为了日志收集的主流手段,对于大日志文件,我还是推荐使用ES,而对于小文件日志,使用zabbix监控也不失为一种较好的手段。