Prometheus alertmanager处理顺序

时间:2017-06-17 07:31:37

标签: go prometheus

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

假设我有以下配置;

routes:

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

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

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

然后从普罗米修斯发出警告,其中包含以下值:“barfooOne” 严重性: “警告”

警报发送给哪个接收者?为什么?

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

你什么时候决定申报路线的新孩子(路线)?

2 个答案:

答案 0 :(得分:1)

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

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

Alertmanager将配置应用于上下左右原则。如果上下类似于OR语句,则将在常规if语句中使用。

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

此外,您应该记住,当第一个陈述匹配时,并且没有' AND'声明的部件,alertmanager将警报推送给接收器,而不进一步查看任何其他匹配。因此,在上面的示例中,如果prometheus使用以下标签{severity:" warning",application:" barfoo"}触发警报,警报将发送到hipchat-teamX。

请注意以下内容,应用程序的标签值与hipchat-teamY的路由匹配。那么为什么它不被发送到那条路线呢?答案不是那种困难,因为第一个匹配,并且没有声明子路由,所以它将停止寻找任何其他匹配。

但是,如果警报管理员的配置类似于下面的代码,则警报将被发送给接收者' 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"

为了使它更先进,asume 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"

我希望这种解释可以帮助那些遇到同样问题或疑问的人。

答案 1 :(得分:0)

我也是新手,所以我只能理解我的理解,即在您的情况下,第二个接收器会收到警报,因为continue默认为false