zabbix日志监控

一般情况下,日志最先反映出应用当前的问题,在海量日志里面找到我们异常记录,例如监控系统日志、nginx、Apache、业务日志,然后记录下来,并且根据情况报警。

1、日志监控项介绍

最主要的是监控日志文件中有没有某个字符串的表达式,对应日志轮转与否,zabbix都支持。

在配置Item的时候,Type选择Zabbix agent (active),这里主要需要配置的是Key。下面是监控日志的两种key——log和logtr。

log[/path/to/some/file,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

logtr[/path/to/some/filename_format,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

◆ regexp:要匹配内容的正则表达式,或者直接写你要检索的内容也可以,例如我想检索带ERROR关键词的记录

◆ encoding:编码相关,留空即可

◆ maxlines:一次性最多提交多少行,这个参数覆盖配置文件zabbxi_agentd.conf中的'MaxLinesPerSecond',我们也可以留空

◆ mode:默认是all,也可以是skip,skip会跳过老数据

◆ output:输出给zabbix server的数据。可以是\1、\2一直\9,\1表示第一个正则表达式匹配出得内容,\2表示第二个正则表达式匹配错的内容。

如果仔细看可以发现,第一个参数不一样,logrt的第一个参数可以使用正则表达式。针对日志回滚用得,例如我们每天都切割nginx日志,日志名为www.a.com_2015-01-01.log、www.a.com_2015-01-02.log等等,使用log肯定不合适,如果文件名使用正则,那么新增的日志文件会立即加入监控。

备注:不管新日志、老日志,只要他们有变更,zabbix都会监控。

只要配置了<regexp>,Zabbix会根据<regexp>的正则表达式来匹配日志中的内容。注意,一定要保证Zabbix用户对日志文件有可读权限,否则这个Item的状态会变成"unsupported"。

 

2、监控原理及注意事项

Zabbix Server和Zabbix Agent会追踪日志文件的大小和最后修改时间,并且分别记录在字节计数器和最新的时间计数器中。

Agent会从上次读取日志的地方开始读取日志。

字节计数器和最新时间计数器的数据会被记录在Zabbix数据库,并且发送给Agent,这样能够保证Agent从上次停止的地方开始读取日志。

当日志文件大小小于字节计数器中的数字时,字节计数器会变为0,从头开始读取文件。

所有符合配置的文件,都会被监控。

一个目录下的多个文件如果修改时间相同,会按照字母顺序来读取。

到每个Update interval的时间时,Agent会检查一次目录下的文件。

Zabbix Agent每秒发送日志量,有一个日志行数上限,防止网络和CPU负载过高,这个数字在zabbix_agentd.conf中的MaxLinePerSecond。

在logtr中,正则表达式只对文件名有效,对文件目录无效。

 

示例:监控zabbix server日志

3、创建日志监控项

配置——>主机,找到zabbix server,监控项——>创建监控项

类型:必须选择zabbix客户端(主动式),因为数据是zabbix被监控的主动提交给server

键值:自定义,参数为日志文件的路径等

信息类型:日志

应用集:日志

查看最新数据

 

4、创建触发器

例如当重启服务的时候进行报警,原理是通过过滤关键字进行报警

配置——>主机,找到zabbix server,触发器——>创建触发器

过滤关键字添加生成表达式

设置报警严重性级别为"严重"

日志监控至此完成,接下来就是触发报警了

猜你喜欢

转载自www.cnblogs.com/ssgeek/p/9282078.html