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