由客户端应用(如 Prometheus 服务端)发送的告警由 Alertmanager 处理。它负责对告警进行去重、分组,并将它们路由到正确的接收器集成,如电子邮件、PagerDuty 或 OpsGenie。它还负责告警的静默和抑制。
以下描述了 Alertmanager 实现的核心概念。请查阅配置文档,了解如何更详细地使用它们。
分组将相似性质的告警归类到单个通知中。这在发生大规模中断时特别有用,当许多系统同时发生故障时,可能会同时触发数百甚至数千个告警。
示例:当发生网络分区时,集群中运行着数十或数百个服务实例。其中一半的服务实例无法访问数据库。Prometheus 中的告警规则被配置为,如果每个服务实例无法与数据库通信,就发送一个告警。结果是数百个告警被发送到 Alertmanager。
作为用户,只希望收到一个通知,同时仍能准确地看到哪些服务实例受到影响。因此,可以将 Alertmanager 配置为按集群和告警名称对告警进行分组,以便发送单个简洁的通知。
告警分组、分组通知的时机以及这些通知的接收者都在配置文件中的路由树中配置。
抑制是一种概念,如果某些其他告警已经在触发,则抑制某些告警的通知。
示例:一个告警正在触发,告知整个集群无法访问。如果该特定告警正在触发,则可以将 Alertmanager 配置为静音所有关于该集群的其他告警。这可以防止发送与实际问题无关的数百或数千个触发告警的通知。
抑制通过 Alertmanager 的配置文件进行配置。
静默是简单地在给定时间内静音告警的直接方法。静默像路由树一样,基于匹配器进行配置。传入的告警会检查它们是否匹配所有活动的静默的等值或正则表达式匹配器。如果匹配,则不会为该告警发送通知。
静默在 Alertmanager 的 Web 界面中进行配置。
Alertmanager 对其客户端的行为有特殊要求。这些只在不使用 Prometheus 发送告警的高级用例中相关。
Alertmanager 支持配置以创建高可用集群。这可以使用 --cluster-* 标志进行配置。
重要的是不要在 Prometheus 及其 Alertmanager 之间进行负载均衡,而是将 Prometheus 指向所有 Alertmanager 的列表。
本文档是开源的。请通过提交问题或拉取请求来帮助改进它。