一、配置文件

  1. 在Alertmanager的配置中会定义一个基于标签匹配规则的告警路由树,以确定在接收到告警后,Alertmanager将匹配到的告警发送给对应的receiver,
  2. 一个最简单的route定义如下所示: ```yaml route: group_by: [‘alertname’] receiver: ‘web.hook’ receivers:
  • name: ‘web.hook’ webhook_configs:

  • 在Alertmanager配置文件中,我们只定义了一个路由,那就意味着所有由Prometheus产生的告警在发送到Alertmanager之后都会通过名为web.hook的receiver接收。这里的web.hook定义为一个webhook地址。

  1. 在route中,我们还可以定义更多的子Route,这些Route通过标签匹配告警的处理方式。

    二、路由匹配规则

  2. 默认情况下,告警进入到顶级route后会遍历所有的子节点,直到找到最深的匹配route,并将告警发送到该route定义的receiver中。但如果route中设置continue的值为false,那么告警在匹配到第一个子节点之后就直接停止。如果continue为true,报警则会继续进行后续子节点的匹配。如果当前告警匹配不到任何的子节点,那该告警将会基于当前路由节点的接收器配置方式进行处理。

  3. 其中告警的匹配有两种方式可以选择。
  • 一种方式基于字符串验证,通过设置match规则判断当前告警中是否存在标签labelname并且其值等于labelvalue。
  • 第二种方式则基于正则表达式,通过设置match_re验证当前告警标签的值是否满足正则表达式的内容。
  1. 可以通过repeat_interval参数设置发送告警通知之前要等待时间。

    三、告警分组

  2. Alertmanager可以对告警通知进行分组,将多条告警合合并为一个通知。可以使用group_by来定义分组规则。基于告警中包含的标签,如果满足group_by中定义标签名称,那么这些告警将会合并为一个通知发送给接收器。

  3. 有的时候为了能够一次性收集和发送更多的相关信息时,可以通过group_wait参数设置等待时间,如果在等待时间内当前group接收到了新的告警,这些告警将会合并为一个通知向receiver发送。
  4. 而group_interval配置,则用于定义相同的Group之间发送告警通知的时间间隔。