【问题标题】:Prometheus alertmanager order of handlingPrometheus alertmanager 处理顺序
【发布时间】:2017-06-17 07:31:36
【问题描述】:

我目前正在重新设计警报管理器的现有警报配置。只有一个小问题,我不完全了解警报管理器。

假设我有以下配置;

routes:

match:
  severity:"warning"
receiver: "hipchat-teamX"

match_re:
  application:"(foo|bar)"
receiver: "hipchat-teamX"

match_re:
  application:"(barfoo.*)"
receiver: "hipchat-teamY"

然后从 Prometheus 发出警报,其值为 application:"barfooOne" 严重性:“警告”

警报将发送到哪个接收器?为什么?

警报管理器是否处理上下结构?

你什么时候决定声明一个新的子路由(路由)?

【问题讨论】:

    标签: go prometheus


    【解决方案1】:

    在 GitHub 的开发人员的帮助下,我找到了一个解决方案。

    您可以通过以下方式看到配置的处理,类似于带有 AND 和 OR 声明的 if 语句。

    Alertmanager 将配置应用于上下左右原则。 up-down 类似于您将在常规 if 语句中使用的 OR 语句。

    当你从左到右时,你可以将它与 if 命令中的 AND 语句进行比较。

    您还应该记住,当第一个语句匹配并且没有声明“AND”部分时,alertmanager 会将警报推送到接收器,而不需要进一步寻找任何其他匹配。因此,在上面的示例中,如果 prometheus 触发带有以下标签 {severity: "warning", application: "barfoo"} 的警报,则警报将发送到 hipchat-teamX。

    注意以下,application 的 label 值匹配 hipchat-teamY 的路由。那么为什么它不被发送到那条路线呢?答案并不难,因为第一个匹配,并且没有声明子路由,所以它将停止寻找任何其他匹配。

    但是,如果 alertmanager 具有如下代码的配置,则警报将发送到接收者“hipchat-teamY”。

    routes:
    
    match:
      severity:"warning"
    receiver: "hipchat-teamX"
    
      routes:
      match_re:
        application:"(barfoo.*)"
      receiver: "hipchat-teamY"
    
    match_re:
      application:"(foo|bar)"
    receiver: "hipchat-teamX"
    
    match_re:
      application:"(barfoo.*)"
    receiver: "hipchat-teamY"
    

    为了让它更高级一点,假设 prometheus 发送一个带有以下标签的新警报 {severity: "critical", application: "barfoo"}。使用以下配置,警报被路由到 hipchat-teamX。

    使用标签 {severity: "critical", application: "foo"},警报被发送到 hipchat-teamY。

    routes:
    
    match:
      severity:"warning"
    receiver: "hipchat-teamX"
    
      routes:
      match_re:
        application:"(barfoo.*)"
      receiver: "hipchat-teamY"
    
      match_re:
        application:"(foo|bar)"
      receiver: "hipchat-teamX"
    
    match:
      severity:"critical"
    receiver: "hipchat-teamY"
    
      routes: 
      match_re:
        application:"(barfoo.*)"
      receiver: "hipchat-teamX"
    
      match_re:
        application:"(foo|bar)"
      receiver: "hipchat-teamY"
    

    我希望这个解释能帮助遇到同样问题的其他人。

    【讨论】:

      【解决方案2】:

      我也是新手,所以我只能脱离我的理解,即在您的场景中,第二个接收者将收到警报,因为默认情况下continuefalse

      【讨论】:

        猜你喜欢
        • 2021-07-13
        • 1970-01-01
        • 2022-01-16
        • 2020-02-24
        • 1970-01-01
        • 2022-01-06
        • 2019-03-28
        • 2021-11-09
        • 1970-01-01
        相关资源
        最近更新 更多