如何在警报管理器路由匹配中不写条件?

时间:2020-04-28 22:11:15

标签: prometheus-alertmanager

如何在警报管理器路由匹配中不写条件? 我只想在严重性不重要的情况下执行此条件。

routes
    - match_re:
          severity: ^(?!critical)
        receiver: teams-channel-webhook-high-priority

我尝试了上述正则表达式条件,但是没有用。

我也尝试过

not_match_re: severity: critical

即使没有用。

2 个答案:

答案 0 :(得分:0)

答案: 您可以创建嵌套的路由树,实际上使您具有“ if ... then ... else ...”功能。

 routes:
    - ... something to do always
      continue: true
    - match:
        severity: critical
      routes:
        - ... things to do when critical
        - ...
    - ... things to do when not critical
    - ...

完全排除“ match”条件会使规则始终匹配。

请注意,“ continue:true”将在比赛后继续进行下一个规则,但仅在同一级别进行。如果没有匹配项,它将仅落入父规则集。

或者,当然,您可以明确匹配所有非关键级别,例如match_re:严重性:“调试|信息|警告”

答案 1 :(得分:0)

matchmatch_re 已在 route 中弃用,转而使用 matcher

matchers 接受条件列表(和)并支持正则表达式匹配 =~ 和不匹配 !~ 运算符。

route:
  # root route
  routes:
    - receiver: recvA
      matchers:
        - severity!~"^critical$"
    - receiver: recvB
      # route:receiverB with no matchers will always match if the previous routes don't