监控日志:大家可以监控系统日志、nginx、Apache、业务日志。想用好用对,不是辣么容易。zabbix最主要的是监控日志文件中有没有某个字符串的表达式,支持日志文件正则和关键字正则,其是把日志文件中符合关键字的日志过滤出来入库,不包含的日志不采集,且只支持主动模式

1、 zabbix日志监控表达式描述

1 log[/var/log/syslog,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]

2 logtr[/var/log/.*.log,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]

1.	file - 日志文件完整路径和名称
2.  regexp -  描述所需模式的正则表达式,要匹配内容的正则表达式,或者直接写你要检索的内容也可以。譬如一个ERROR 二个 ERROR|FALSE,当然你也可以不写,就采集了所有的日志了
3.  encoding - 编码相关,linux建议用UTF-8,WIN建议用ANSI,具体情况具体分析
4.  maxlines - 一次性最多提交多少行,这个参数覆盖配置文件zabbxi_agentd.conf中的’MaxLinesPerSecond’,默认留空
5.  mode - 默认是all,也可以是skip,skip会跳过老数据,这个最好是skip,不然会采集历史数据
6.  output - 输出给zabbixserver的数据。可以是\1、\2一直\9,\1表示第一个正则表达式匹配出得内容,\2表示第二个正则表达式匹配错的内容。这个没怎么用
7.  maxdelay - 最大延迟(秒)。 类型:float。 值:0-(默认)不忽略日志文件行; > 0.0-忽略旧行,以便在“maxdelay”秒内获取最近分析的行。使用前请阅读 maxdelay注释!

zabbix官网:支持的监控项key log支持日志切割,只监控当前文件夹日志
logrt支持文件正则,支持多个日志文件采集,不管新旧文件,只要他们有变更,zabbix都会监控。

注意,一定要保证Zabbix用户对日志文件有可读权限,正则表达式正确度,否则这个Item的状态会变“unsupported”表示不支持会报错的

1.在zabbixWEB页面上按照1.配置 > 2.主机 > 3.创建监控项来创建所需要的监控项。

zabbix 监控项更新间隔 0 zabbix 监控日志_linux


2.按照所需顺序添加所需的监控项,在这里我监控的是Windows系统日志我选的是logrt来监控Windows日志。

zabbix 监控项更新间隔 0 zabbix 监控日志_linux_02


3. 下面是我配置好的日志监控。

08:09:59.197 >> ALRM: OnCallEvent nChn=112 License Data is error!!! 报错信息
logrt["F:\Program Files (x86)\Tomisoft\QuarkCall 5.4\IVRSERVICE\msg\^IVR_[0-9]+.log$"日志文件位置,"([0-9]{2}:[0-9]{2}:[0-9]{2}).*ALRM.*OnCallEvent.nChn=([0-9]+).*"正则,,,skip,]

zabbix 监控项更新间隔 0 zabbix 监控日志_日志文件_03


4.我这边触发器创建的是,有报错日志小于大于1就告警。

zabbix 监控项更新间隔 0 zabbix 监控日志_日志文件_04


注意:windows日志如果日志内容有中文的话,你不配置好编码,你就等着乱码吧。具体跟前面差不多,怎样判断编码方式呢,这里有个小技巧,你用记事本打开日志内容,然后另存日志,就可以看到你的日志的编码方式了,不知道准不准,一般来说都是ANSI编码:

例子

logrt["c:\server.*.log","连接服务器失败",ANSI,,skip,]