作者 乐维社区(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
成功触发告警
测试完成。
以上就是本期的全部内容,更多运维技巧欢迎关注乐维社区,更多运维问题也欢迎到乐维社区留言提问。