作者 乐维社区(forum.lwops.cn)许远


背景:某公司基于 Nginx 服务器搭建的网站,需要监控页面响应耗时的数据,因此该公司搭建了zabbix开源监控系统,当监控到页面响应时间超过3000ms阈值时,就进行告警通知。本文将通过日志关键字的监控来实现对页面响应时间感知,示例Zabbix版本:5.0.9。

日志文件监控介绍

监控日志的两种key(log和logtr),本文只针对log 进行介绍。

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

 file:日志文件(必须填写绝对路径)。

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

 encoding:编码相关,留空即可

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

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

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

 maxdelay: 最大延迟(秒)。 类型:float。 值:0-(默认)不忽略日志文件行; > 0.0-忽略旧行,以便在“maxdelay”秒内获取最近分析的行。

日志监控注意事项

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

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

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

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

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

创建日志监控项

zabbix应用教程:基于Nginx页面响应的日志监控用例_日志文件

zabbix应用教程:基于Nginx页面响应的日志监控用例_日志文件_02

名称: 自定义。

类型: Zabbix客户端(主动式)。(日志类型监控必须使用主动式)

键值: log[/itops/nginx/logs/nginx.log,页面响应耗时:,UTF-8,,skip,]

键值含义:

/itops/nginx/logs/nginx.log    # 日志绝对路径

    页面响应耗时: # 正则表达式,匹配日志中包含“页面响应耗时:”行。

UTF-8 # 日志文件编码

skip # 跳过旧数据的处理 (仅影响新创建的监控项)。

信息类型: 选择“日志”。

创建触发器

zabbix应用教程:基于Nginx页面响应的日志监控用例_nginx_03

表达式:

{192.168.3.28:log[/itops/nginx/logs/nginx.log,页面响应耗时:,UTF-8,,skip,].iregexp("(?<=页面响应耗时:)([3-9]\d{3,}|[1-9]\d{4,})")}=1

参数含义:

iregexp("(?<=页面响应耗时:)([3-9]\d{3,}|[1-9]\d{4,})")  # 当监测到符合正则表达式条件(页面响应耗时大于3000)时,触发器将设置为触发。

测试方法:

echo [24-7-9 14:31:29:100 CST]  页面响应耗时:3000  >> nginx.log

zabbix应用教程:基于Nginx页面响应的日志监控用例_zabbix监控日志_04

zabbix应用教程:基于Nginx页面响应的日志监控用例_zabbix监控日志_05

成功触发告警

zabbix应用教程:基于Nginx页面响应的日志监控用例_nginx_06

测试完成。

以上就是本期的全部内容,更多运维技巧欢迎关注乐维社区,更多运维问题也欢迎到乐维社区留言提问