Alertmanager 的几个重要参数

  • group_by
  • group_wait
  • group_interval
  • repeat_interval

正式开始之前,先来看下 Prometheus 关于告警的基础信息,有两个地方

  • scrape_interval:Prometheus 每次去抓取指标的间隔时间
  • evaluation_interval:Prometheus 评估告警规则(alert rules)的间隔时间

当告警规则被评估的时候,告警状态会被改变为 inactive(正常)、pending(有问题)、firing(告警), 当告警规则被评估之后,这个告警状态就会发送给 Alertmanager(最原始的告警信息)

这个时候,group_by 的角色就到了

为了避免持续发送类似的告警,Alertmanager 通过配置分组将相关联的告警分组成一个告警

group_by: ["alertname", "level", "_product_id"]

相反,如果不配置分组,当一个新的告警(来自 Prometheus)来了之后,等过了group_interval之后,将会发送所有的告警(包括已经解决的)给接收者

group_wait,这个等待时间,本质上是缓冲下来自 Prometheus 发送给 Alertmanager 的告警,在这个等待时间内,Alertmanager 抑制告警并尽可能多的收集最初的告警至相同的分组之内

group_by: ["alertname", "level", "_product_id"]
group_wait: 40s

这样就减少了告警噪音,但是也带来一个问题就是接收到告警时间拉长了

另一个问题就是在下一次的告警规则评估之后,会收到相同的分组告警信息

这就引出了group_interval

当一个新的告警被添加到分组告警(这个分组告警发送过)内之后,等待多久发送告警

group_by: ["alertname", "level", "_product_id"]
group_wait: 40s
group_interval: 5m

最后就来到了repeat_interval,决定了多久重复发送告警

参考文章open in new window

上次更新:
贡献者: kongzZ