Zabbix 触发器最后 N 个文本值与正则表达式匹配

Zabbix 触发器最后 N 个文本值与正则表达式匹配

我通过检查最后一个值是否与正则表达式匹配来检查是否发生错误。

({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 中的内置触发器表达式构造函数,即使不容易,它也能使这类事情变得更容易。

相关内容