zabbix 的 PCRE 正则表达式转换

PCRE Regex conversion for zabbix

我目前监控一个打印以下健康检查的页面

<status>
<link type="text/css" id="dark-mode" rel="stylesheet" href=""/>
<style type="text/css" id="dark-mode-custom-style"/>
<cache>ok</cache>
<databaseMaster>error</databaseMaster>
<databaseSlave>error</databaseSlave>
<redis>ok</redis>
<files>ok</files>
</status>

我使用以下触发器来完成(这个有效)

{host:web.page.regexp[{$HOST_IP},health/check,,[error|warning],,].str(error)}=1

然而,当试图详细解析每个单独的行响应时(即数据库主机, 在第 5 行,它可以显示 3 个值,ok、error 和 warning,我试图得到的表达式 运行 是(这不起作用)

{host:web.page.regexp[{$HOST_IP},health/check,,[<databaseMaster>error|<databaseMaster>warning],,].str(error)}=1

然而,尽管语法我找不到任何错误,因为大于和小于符号不是元字符,不知何故我怀疑我的正则表达式是错误的但我不确定如何翻译pcre 这样我就可以匹配要触发警报的字符

我也想知道 zabbix 是否有更适合这个的功能?

[<databaseMaster>error|<databaseMaster>warning] - 您试图匹配 <databaseMaster>error<databaseMaster>warning,但您实际上是在匹配列表 <d,a,t,b,s,e,M,r,>,o,|,w,n,i,g 中的一个字符。

[方括号] 在这种情况下表示 "match one character present in the list." 尝试使用捕获组,它的行为将如您所料:

(<databaseMaster>error|<databaseMaster>warning)

查看 this answer 了解有关正则表达式中圆括号和方括号之间区别的更多信息。