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