基于标签的告警处理路由
在 Alertmanager 的配置中会定义一个基于标签匹配规则的告警路由树,以确定在接收到告警后 Alertmanager 需要如何对其进行处理。route 中主要定义了告警的路由匹配规则,以及 Alertmanager 需要将匹配到的告警发送给哪一个receiver。route 的完整定义如下:
一个最简单的 route 定义如下所示:
上面的配置只定义了一个路由,这意味着所有由 Prometheus 产生的告警在发送到 Alertmanager 之后都会通过名为web.hook
的 receiver 接收,这里的 web.hook 定义为一个 webhook 地址。
路由匹配
每一个告警都会从配置文件中顶级的 route 进入路由树,每一个路由都可以定义自己的接收器以及匹配规则。
默认情况下,告警进入到顶级 route 后会遍历所有的子节点,直到找到最深的匹配 route,并将告警发送到该 route 定义的 receiver 中。
如果 route 中设置 continue 的值为 false,那么告警在匹配到第一个子节点之后就直接停止。如果 continue 为 true,报警则会继续进行后续子节点的匹配。
告警的匹配有两种方式可以选择:
基于字符串:通过设置 match 规则判断当前告警中是否存在标签 labelname 并且其值等于labelvalue。
基于正则表达式:通过设置 match_re 验证当前告警标签的值是否满足正则表达式的内容。
顶级的 route 必须匹配所有告警,即不能有任何的设置 match 和 match_re。
告警分组
Alertmanager 可以对告警通知进行分组,将多条告警合合并为一个通知。
使用 group_by 来定义分组规则:基于告警中包含的标签,根据 group_by 中定义的标签名称,可以将那些标签值相同的告警合并为一个通知发送给接收器。
通过 group_wait 参数设置等待时间:如果在等待时间内当前 group 接收到了新的告警,这些告警将会合并为一个通知向 receiver 发送。
group_interval 用于定义相同的 Group 之间发送告警通知的时间间隔。
最后更新于