zabbix应用教程:基于Nginx页面响应的日志监控用例
作者 乐维社区(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中的MaxLinePerSeco
创建日志监控项
名称: 自定义。
类型: Zabbix客户端(主动式)。(日志类型监控必须使用主动式)
键值: log[/itops/nginx/logs/nginx.log,页面响应耗时:,UTF-8,,skip,]
键值含义:
/itops/nginx/logs/nginx.log # 日志绝对路径
页面响应耗时: # 正则表达式,匹配日志中包含“页面响应耗时:”行。
UTF-8 # 日志文件编码
skip # 跳过旧数据的处理 (仅影响新创建的监控项)。
信息类型: 选择“日志”。
创建触发器
表达式:
{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
成功触发告警
测试完成。
以上就是本期的全部内容,更多运维技巧欢迎关注乐维社区,更多运维问题也欢迎到乐维社区留言提问。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了