Alertmanager
Alertmanager 用于处理由 Prometheus 服务器等客户端应用程序发送的告警。它负责将告警进行去重、分组,并将它们路由到正确的接收器集成,如电子邮件、PagerDuty 或 OpsGenie。它还负责告警的静默与抑制。
以下内容描述了 Alertmanager 实现的核心概念。查阅配置文档以了解关于如何使用它们的更多详细信息。
分组 (Grouping)
分组将性质相似的告警分类为单个通知。这在大型中断期间特别有用,当许多系统同时故障,成百上千个告警可能同时触发时。
示例:当发生网络分区时,您的集群中正在运行数十或数百个服务实例。其中一半服务实例无法再连接到数据库。Prometheus 中的告警规则被配置为:如果服务实例无法与数据库通信,则为每个服务实例发送一个告警。结果,成百上千个告警被发送到 Alertmanager。
作为用户,您只想收到一个提醒,同时仍能准确地查看哪些服务实例受到了影响。因此,您可以将 Alertmanager 配置为按集群和告警名称对告警进行分组,从而发送单个紧凑的通知。
告警的分组、分组通知的时间设置以及这些通知的接收器均由配置文件中的路由树进行配置。
抑制 (Inhibition)
抑制是一个概念,即如果某些其他告警已经在触发,则抑制特定告警的通知。
示例:一个告警正在触发,告知整个集群不可达。可以配置 Alertmanager,如果该特定告警正在触发,则静默所有关于该集群的其他告警。这可以防止收到成百上千个与实际问题无关的触发告警的通知。
抑制是通过 Alertmanager 的配置文件进行配置的。
静默 (Silences)
静默是一种简单地在给定时段内屏蔽告警的方法。静默配置基于匹配器,就像路由树一样。传入的告警会被检查是否匹配活动静默的所有相等或正则表达式匹配器。如果匹配,则不会为该告警发送通知。
静默是在 Alertmanager 的 Web 界面中配置的。
客户端行为
Alertmanager 对其客户端的行为有特殊要求。这些仅与不使用 Prometheus 发送告警的高级用例相关。
高可用性
Alertmanager 支持配置创建集群以实现高可用性。这可以使用 --cluster-* 标志 进行配置。
重要的是不要在 Prometheus 和其 Alertmanager 之间进行流量负载均衡,而是将 Prometheus 指向所有 Alertmanager 的列表。
告警限制 (可选)
Alertmanager 支持限制每个告警名称的活动告警数量。这可以通过使用 --alerts.per-alertname-limit 标志进行配置。
当达到限制时,任何新的告警都会被丢弃,来自已知告警的心跳会得到处理。已知的告警(指纹)会自动过期,以便为新告警腾出空间。
当意外发送大量相同告警的实例到 Alertmanager 时,此功能很有用。限制每个告警名称的告警数量可以防止可靠性问题,并避免告警接收器被淹没。
alertmanager_alerts_limited_total 指标显示由于每告警名称限制而被丢弃的告警总数。启用 alert-names-in-metrics 功能标志会将 alertname 标签添加到此指标中。