3

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

 1 year ago
source link: https://www.cnblogs.com/virtualzzf/p/17609324.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

0 背景介绍

zabbix 6.0

假设已实现某集群系统日志监控,内容如下:

2611015-20230806130944940-771007835.png

日志记录了多个节点下线、上线,假如单纯的通过online和offline关键词判定告警的产生和恢复,则可能出现host1下线的告警被host2上线的消息恢复的情况,因此需要通过提取监控项子字符串,将触发器标签设置为主机名称,通过标签的对应避免错误恢复的情况。

1.1 监控项设置(模拟)

通过zabbix agent自定义监控项,读取某文件内容模拟日志/trap告警,测试获取触发器标签中提取子字符串功能,以及相同标签的触发器自动恢复功能。

2611015-20230806130216121-1492161641.png

1.2 文件内容

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

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

2.1 触发器设置

2611015-20230806130302975-1530903544.png

通过设置问题表达式,设定满足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 标签设置

2611015-20230806130314704-530150616.png

通过iregsub函数(相对于regsub不区分大小写)对监控项值(即告警内容)进行截取,其中每个括号内为一个匹配,\1、\2分别按顺序输出对应值。

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

3.1 node-01离线

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

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标签值一致,告警得以恢复
2611015-20230806130437033-565388399.png


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK