Zabbix的PCRE正则表达式转换

我目前正在监视打印以下健康检查的页面

<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个值,确定,错误和警告,我正在尝试运行的表达式消失了(这不起作用)

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

尽管有语法,但我找不到任何错误,因为大于和小于符号不是元字符,所以我怀疑我的regex表达式是错误的,但是我不确定如何将其转换为pcre  这样我就可以匹配要触发警报的字符

我还想知道zabbix是否具有更适合此功能的功能?

wawad1314 回答:Zabbix的PCRE正则表达式转换

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

在此情况下,[方括号]表示“匹配列表中存在的一个字符”。尝试使用捕获组,该捕获组的行为将与您期望的一样:

(<databaseMaster>error|<databaseMaster>warning)

检查this answer以获得有关正则表达式中括号和方括号之间差异的更多信息。

本文链接:https://www.f2er.com/2850725.html

大家都在问