zabbix的PCRE正则表达式转换

问题描述 投票:0回答:1

我目前正在监视打印以下运行状况检查的页面

<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},health/check,,[<databaseMaster>error|<databaseMaster>warning],,].str(error)}=1

[尽管有语法并且我找不到任何错误,因为大于和小于符号不是元字符,所以我怀疑我的正则表达式表达式是错误的,但是我不确定如何将其翻译为[ C0]所以我可以匹配要触发警报的字符

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

regex pcre zabbix
1个回答
1
投票

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)以获得更多关于正则表达式中括号和方括号之间差异的信息。

© www.soinside.com 2019 - 2024. All rights reserved.