Zabbix:监控日志

Posted by zhangshun on December 13, 2019

监控目的

使用zabbix监控日志文件的功能,及时发现应用日志的异常信息,并及时触发告警。

监控项

使用zabbix客户端(主动式) 监控项键值分为两种,一种是log[/path/to/file/file_name,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]或者logrt[/path/to/file/regexp_describing_filename_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>],Zabbix代理将通过内容正则表达式(如果存在)过滤日志文件的条目,数据类型选择日志

一种是log.count[/path/to/file/file_name,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>]或者logrt.count[/path/to/file/regexp_describing_filename_pattern,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>],只需要匹配行的数量,数据类型选择数字(无正负)

日志时间格式:

  • y: 年 (0001-9999)
  • M: 月 (01-12)
  • d: 日 (01-31)
  • h: 小时 (00-23)
  • m: 分钟 (00-59)
  • s: 秒 (00-59)

例如:INFO 2019-12-13 14:26:27 [8cf6fae5-ce46-4d17-a852] [Api post antifraud finish]
日志的时间格式必须定义为:pppppyyyy-MM-ddphh:mm:ss
请注意,“p”和“:”字符只是占位符

监控键值: log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]

  • file:日志文件完整路径和名称
  • regexp:描述所需模式的正则表达式。(ERROR|error)匹配ERROR或者error中的任意一个。
  • encoding:编码标识符,留空即可
  • maxlines:Agent将发送到Zabbix服务器或代理的每秒最大行数,我们也可以留空
  • mode:默认是all,也可以是skip,skip会跳过老数据
  • output:可选项,输出格式模板。
  • maxdelay:最大延迟(秒)。

可以再“监测中”–“最新数据”查看监控项获取的数据,如果没有数据,说明监控项配置有问题或者zabbix-agent没有权限读取日志。

触发器

日志中有无新error数据作为触发器的触发条件。也可以采用其他的触发表达式

总结

  • 确保zabbix对相应的日志文件有读的权限。
  • 准确使用log或者logrt并结合正则表达式匹配到相应的信息。
  • zabbix agent对新加入监控的日志会读取所有内容,监控上以后只会读取日志的更新内容。
  • 将zabbix自己的日志监控上,非常有帮助。针对各应用需要监控的日志按需添加,如监控nginx的access.log,当出现50x之类的错误时,及时告警等。