我通过检查最后一个值是否与正则表达式匹配来检查是否发生错误。
({myhost.com:my.item.regexp(^ERROR$)})#0
我需要通过检查不是最后一个而是最后 N 个值来匹配正则表达式,即最后 2-3 个值,来获得一些容忍度。
我怎样才能实现这个目标?
答案1
根据Zabbix功能文档,函数 regexp() 接受第二个参数 - 要分析的秒数或值。不幸的是,如果至少有一个值匹配,它将返回 1,但这不是您所需要的 - 您需要所有值都匹配。
因此,如果您的正则表达式足够简单,请考虑使用带有“eq”或“like”运算符的 count() 函数:
{host:item.count(#3,ERROR,eq)} = 3
{host:item.count(#3,ERROR,like)} = 3
还有一个功能请求,希望能够在 count() 函数中使用正则表达式,该请求已在以下位置跟踪:ZBXNEXT-1250。
答案2
会不会像
({myhost.com:my.item.regexp(^ERROR$).max(#3)}=0)
对你有用吗?如果没有用,只需使用 Zabbix web GUI 中的内置触发器表达式构造函数,即使不容易,它也能使这类事情变得更容易。