zabbix触发器标签提取监控项子字符串功能实现对应告警恢复

0 实验环境

zabbix 6.0

1 监控项

1.1 监控项设置

图片[1]-zabbix触发器标签提取监控项子字符串功能实现对应告警恢复-五八三
通过zabbix agent自定义监控项,读取某文件内容模拟日志/trap告警,测试获取触发器标签中提取子字符串功能,以及相同标签的触发器自动恢复功能。

1.2 文件内容

文件中写入如下内容,意为集群中node-01主机离线。

07:28:29 2023/08/03  AlertLevel:major AlertResourceType:host AlertHostName:node-01 AlertValue:offline

2 触发器

2.1 触发器设置

图片[2]-zabbix触发器标签提取监控项子字符串功能实现对应告警恢复-五八三
通过设置问题表达式,设定满足AlertResourceType:host.AlertValue:offline正则表达式的日志为“主机离线”告警,满足AlertResourceType:host.AlertValue:online正则表达式的日志为“主机离线”告警恢复表达式。
但此时存在一个问题,假如集群中有多台主机离线再恢复,仅通过关键词判定告警恢复就无法对应,例如node-01离线的告警被node-02的上线恢复,因此需要通过标签对主机名称进行匹配判断。
按图中所示,OK event closes条件设置为All problems if tag values match,Tag for matching设置为AlertHostName。此时只有AlertHostName标签值相同时,事件才会关闭,触发器才会恢复。

2.2 标签设置

图片[3]-zabbix触发器标签提取监控项子字符串功能实现对应告警恢复-五八三
通过iregsub函数(相对于regsub不区分大小写)对监控项值(即告警内容)进行截取,其中每个括号内为一个匹配,\1、\2分别按顺序输出对应值。

{{ITEM.VALUE}.iregsub("AlertHostName:(\S+)","\1")}

3 测试

3.1 node-01离线

手工执行监控项,模拟node-01节点离线,此时可以看出已经产生标签,标签名为AlertHostName,标签值为node-01

3.1 node-02上线

修改文本内容如下,意为node-02节点上线,并手工执行。

07:28:29 2023/08/03  AlertLevel:major AlertResourceType:host AlertHostName:node-02 AlertValue:online

此时AlertHostName标签为node-02,因和node-01不匹配,因此告警无法恢复。

3.2 node-01上线

修改文本内容如下,意为node-01节点上线,并手工执行。

07:28:29 2023/08/03  AlertLevel:major AlertResourceType:host AlertHostName:node-01 AlertValue:online

此时因为AlertHostName标签值一致,告警得以恢复
图片[4]-zabbix触发器标签提取监控项子字符串功能实现对应告警恢复-五八三
全部日志如下:

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYZvJgB5' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片