通常状况下,日志最早反映出应用当前的问题,在海量日志里面找到咱们异常记录,例如监控系统日志、nginx、Apache、业务日志,而后记录下来,而且根据状况报警。 nginx
一、日志监控项介绍 正则表达式
最主要的是监控日志文件中有没有某个字符串的表达式,对应日志轮转与否,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>] spa
◆ regexp:要匹配内容的正则表达式,或者直接写你要检索的内容也能够,例如我想检索带ERROR关键词的记录 日志
◆ encoding:编码相关,留空便可 regexp
◆ maxlines:一次性最多提交多少行,这个参数覆盖配置文件zabbxi_agentd.conf中的'MaxLinesPerSecond',咱们也能够留空 orm
◆ mode:默认是all,也能够是skip,skip会跳过老数据 server
◆ output:输出给zabbix server的数据。能够是\一、\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"。
二、监控原理及注意事项
Zabbix Server和Zabbix Agent会追踪日志文件的大小和最后修改时间,而且分别记录在字节计数器和最新的时间计数器中。
Agent会从上次读取日志的地方开始读取日志。
字节计数器和最新时间计数器的数据会被记录在Zabbix数据库,而且发送给Agent,这样可以保证Agent从上次中止的地方开始读取日志。
当日志文件大小小于字节计数器中的数字时,字节计数器会变为0,从头开始读取文件。
全部符合配置的文件,都会被监控。
一个目录下的多个文件若是修改时间相同,会按照字母顺序来读取。
到每一个Update interval的时间时,Agent会检查一次目录下的文件。
Zabbix Agent每秒发送日志量,有一个日志行数上限,防止网络和CPU负载太高,这个数字在zabbix_agentd.conf中的MaxLinePerSecond。
在logtr中,正则表达式只对文件名有效,对文件目录无效。
示例:监控zabbix server日志
三、建立日志监控项
配置——>主机,找到zabbix server,监控项——>建立监控项
类型:必须选择zabbix客户端(主动式),由于数据是zabbix被监控的主动提交给server
键值:自定义,参数为日志文件的路径等
信息类型:日志
应用集:日志
查看最新数据
四、建立触发器
例如当重启服务的时候进行报警,原理是经过过滤关键字进行报警
配置——>主机,找到zabbix server,触发器——>建立触发器
过滤关键字添加生成表达式
设置报警严重性级别为"严重"
日志监控至此完成,接下来就是触发报警了