我目前正在重新设计警报管理器的现有警报配置。这只是一个小问题,我完全不了解警报管理员。
假设我有以下配置;
routes:
match:
severity:"warning"
receiver: "hipchat-teamX"
match_re:
application:"(foo|bar)"
receiver: "hipchat-teamX"
match_re:
application:"(barfoo.*)"
receiver: "hipchat-teamY"
然后从普罗米修斯发出警告,其中包含以下值:“barfooOne” 严重性: “警告”
警报发送给哪个接收者?为什么?
警报管理器是否处理向上结构?
你什么时候决定申报路线的新孩子(路线)?
答案 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
。