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,决定了多久重复发送告警