【问题标题】:PCRE Regex conversion for zabbixzabbix的PCRE正则表达式转换
【发布时间】:2019-12-27 22:07:17
【问题描述】:

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

<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是否有更适合这个的功能?

【问题讨论】:

    标签: regex pcre zabbix


    【解决方案1】:

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

    [方括号]在这种情况下表示“匹配列表中存在的一个字符”。尝试使用捕获组,它的行为将符合您的预期:

    (&lt;databaseMaster&gt;error|&lt;databaseMaster&gt;warning)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多