Alertmanager 可处理 Prometheus 服务器等客户端应用程序发送的警报。它负责对警报进行去重、分组,并将其路由到正确的接收器集成(如电子邮件、PagerDuty 或 OpsGenie)。它还负责警报的静默和抑制。
下面介绍 Alertmanager 实现的核心概念:
分组将性质相似的警报归类到一个通知中。当许多系统同时发生故障,成百上千个警报可能同时响起时,这在较大的故障期间尤其有用。
举例说明: 当网络分区发生时,群集中正在运行数十或数百个服务实例。一半的服务实例无法再访问数据库。Prometheus 中的警报规则被配置为在每个服务实例无法与数据库通信时为其发送警报。结果数百个警报被发送到 Alertmanager。
作为用户,我们只希望获得一个页面,同时还能看到受影响的服务实例。因此,可以对 Alertmanager 进行配置,按群集和警报名称对警报进行分组,这样就能发送一个简洁的通知。
警报的分组、分组通知的时间以及这些通知的接收方都是通过配置文件中的路由树来配置的。
抑制的概念是,如果某些其他警报已经触发,则抑制某些警报的通知。
例如: 一个警报正在发出,通知整个群集无法访问。可以对 Alertmanager 进行配置,使其在该特定警报触发时静音处理与该群集有关的所有其他警报。这样就可以防止数百或数千个与实际问题无关的警报触发通知。
抑制功能可通过 Alertmanager 的配置文件进行配置。
静默是一种在给定时间内使警报静音的简单方法。静默是根据匹配器配置的,就像路由树一样。会检查传入的警报是否与活动静默的所有等价或正则表达式匹配器匹配。如果匹配,则不会为该警报发送通知。
静默在 Alertmanager 的 Web 界面中进行配置。
Alertmanager 对其客户端的行为有特殊要求。这些要求只适用于不使用 Prometheus 发送警报的高级用例。
Alertmanager 支持为高可用性创建集群的配置。可以使用 --cluster-* 标记进行配置。
重要的是,不要在 Prometheus 及其 Alertmanager 之间进行负载均衡,而是将 Prometheus 指向所有 Alertmanager 的列表。