Zabbix如何将web scenario检查的错误消息解析为宏添加到告警通知
Zabbix web场景告警添加具体错误信息的实现方法
问题原因
你之前使用的{ITEM.VALUE}等宏只能获取触发触发器的监控项的值,而web场景的可用性触发器默认关联的是web.test.fail[场景名]监控项,该监控项返回值为失败步骤的数字编号,自然无法拿到错误详情。
web场景的具体错误信息会单独存储在同一主机下、键为web.test.error[场景名]的专属监控项中,你需要引用该监控项的最新值来实现需求。
配置方案
根据你触发器的创建方式不同,有两种通用配置方法:
情况1:触发器通过web场景自动发现(LLD)批量生成
这是最适合有数十个web场景的批量配置方案,不需要逐个修改配置:
- 在web场景自动发现的触发器原型的消息模板,或者全局动作的默认消息模板中,添加如下行即可:
Issue: {HOST:web.test.error[{#SCENARIO}].LASTVALUE}
这里的{#SCENARIO}是Zabbix web场景自动发现自带的内置宏,会自动匹配当前触发告警的web场景名称,无需手动逐个填写场景名。如果配置后宏不生效,可以尝试将.LASTVALUE替换为.last(),适配不同Zabbix版本的宏语法要求。
情况2:触发器为手动逐个创建
你可以直接在全局动作的默认消息模板中,引用对应主机的指定web场景错误监控项的值即可,例如针对Jira-QAS场景,添加如下内容:
Issue: {你的主机名:web.test.error[Jira-QAS].LASTVALUE}
如果需要适配所有手动创建的触发器,也可以结合Zabbix的宏正则提取功能,从当前触发告警的web.test.fail类监控项键名中提取场景名,通用写法如下:
Issue: {HOST:web.test.error["{{ITEM.KEY}.regsub("^web.test.fail\[(.*)\]$", \1)}"].LASTVALUE}
验证步骤
配置前可以先到对应主机的监控项列表中,过滤键名包含web.test.error的监控项,确认对应场景的该监控项最新值为你需要的具体错误内容,再配置宏即可生效。
内容的提问来源于stack exchange,提问作者German Martin
相关产品推荐
相关产品推荐

