概念概览(=> ALERTING/Alerting overview)
Alerting overview | Prometheus
在 Prometheus 中,当指标异常而触发 Promethesu 的告警规则时,Promethesu 将请求 Alertmanager 服务,来要求 Alertmanager 发送告警信息,而 Alertmanger 负责处理这些告警消息,来决定是 是否发送消息、是否合并消息、何时发送、发送渠道等等。所以说,Alertmanager 负责管理告警消息的发送,但并不负责检查指标是否达到告警阈值(这属于 Prometheus 的任务)。
简而言之,Prometheus 负责产生告警,Alertmanager 负责进行告警信息的抑制、静默、聚合、发送;
在 Prometheus 中,配置告警的步骤如下:
1)安装并配置 Alertmanager 服务;
2)配置 Prometheus 连接 Alertmanager 服务;
3)配置 Prometheus 的 Alert Rule 来产生告警;
核心的基本概念(=> ALERTING/Alertmanager)
消息分组(Grouping)
合并告警消息。例如,当数据中心网络故障,所有服务均不可连接,此时将产生大量告警消息。而我们仅仅希望收到一条汇总的告警消息,而不是针对每个服务的告警消息。这就是 Grouping 的作用,能够按照告警、时间、接收人来发送告警信息。对于该配置,需要在配置文件中进行设置。
Q:Alertmanager 依据什么参数来合并告警?
A:Alertmanger 通过 Label 来识别是否为同个告警,如果 Label 相同,则表示为同个告警,则进行相关去重等动作。Annotaion 则是作为描述信息,不用来区分告警。
R:Prometheus/Clients
消息抑制(Inhibition)
例如,如果集群无法访问,那么我们希望抑制与这个集群相关的告警信息。这就是 Inhibition 的作用,根据关系而仅发送最关键的告警。对于该配置,需要在配置文件中进行设置。
条件判断(Silences)
允许我们根据告警消息的条件、标签来过滤告警消息,以决定某些告警是否发送。对于该配置,需要在 Alertmanager 的 Web 界面中完成。
灵活请求(Client Behavior)
除了配合 Promethesu 来发送告警消息,还能够单独使用 Alertmanager 服务。我们能够发送自定义 HTTP 请求并附带某些信息,来要求 Alertmanager 发送告警。
高可用性(High Availability)
支持配置高可用 Alertmanager 集群,来防止丢失告警消息。注意事项,官方文档要求这种高可用不能使用负载均衡等工具,而是以 –cluster.* 启动 Alertmanager 并在 Prometheus 中配置多个 Alertmanager 节点地址。