Prometheus专题[8.Prometheus之Alertmanager]
1.概述
Alertmanager与Prometheus是相互分离的两个组件。Prometheus服务器根据报警规则将警报发送给Alertmanager,然后Alertmanager将silencing、inhibition、aggregation等消息通过电子邮件、PaperDuty和HipChat发送通知。
在 Prometheus 中告警分为两部分:
Prometheus 服务根据所设置的告警规则将告警信息发送给 Alertmanager。
Alertmanager 对收到的告警信息进行处理,包括分组,抑制,静默策略路由告警通知。
使用告警服务主要的步骤如下:安装配置 Alertmanager。
通过设置 -alertmanager.url 让 Prometheus 服务与 Alertmanager 进行通信。
在 Prometheus 服务中设置告警规则。
2.Grouping:分组
分组是指当出现问题时,Alertmanager会收到一个单一的通知,而当系统宕机时,很有可能成百上千的警报会同时生成,这种机制在较大的中断中特别有用。
例如,当数十或数百个服务的实例在运行,网络发生故障时,有可能服务实例的一半不可达数据库。在告警规则中配置为每一个服务实例都发送警报的话,那么结果是数百警报被发送至Alertmanager。
但是作为用户只想看到单一的报警页面,同时仍然能够清楚的看到哪些实例受到影响,因此,人们通过配置Alertmanager将警报分组打包,并发送一个相对看起来紧凑的通知。
分组警报、警报时间,以及接收警报的receiver是在配置文件中通过路由树配置的。
3.Inhibition:抑制
抑制是指当警报发出后,停止重复发送由此警报引发其他错误的警报的机制。
例如,当警报被触发,通知整个集群不可达,可以配置Alertmanager忽略由该警报触发而产生的所有其他警报,这可以防止通知数百或数千与此问题不相关的其他警报。
抑制机制可以通过Alertmanager的配置文件来配置。
4.Silences:沉默
沉默是一种简单的特定时间静音提醒的机制。一种沉默是通过匹配器来配置,就像路由树一样。传入的警报会匹配RE,如果匹配,将不会为此警报发送通知。
沉默机制可以通过Alertmanager的Web页面进行配置。
5.route:路由
路由块定义了路由树及其子节点。如果没有设置的话,子节点的可选配置参数从其父节点继承。
每个警报进入配置的路由树的顶级路径,顶级路径必须匹配所有警报(即没有任何形式的匹配)。然后匹配子节点。如果continue的值设置为false,它在匹配第一个孩子后就停止;如果在子节点匹配,continue的值为true,警报将继续进行后续兄弟姐妹的匹配。如果警报不匹配任何节点的任何子节点(没有匹配的子节点,或不存在),该警报基于当前节点的配置处理。
例子:
1 | # The root route with all parameters, which are inherited by the child |
6.通过 Email 接收告警
以下介绍如何通过 Email 接受告警。
相关信息说明:
- Prometheus 版本:prometheus-2.1.0
- Alertmanager 版本:alertmanager-0.14
- 发送告警邮件的邮箱:email
假设该实验运行在本地机器上, Prometheus 默认端口为 9090,Alertmanager 默认端口为 9093。
修改 AlertManager 配置文件
其中一些关键配置如下:
1 | global: |
在prometheus下添加 alert.rules 文件
文件中写入以下简单规则作为示例。
1 | groups: |
修改 prometheus.yml 文件
添加以下规则:
1 | rule_files: |
启动AlertManager服务
1 | ./Alertmanager -config.file=alertmanager.yml |
重载prometheus服务
- 本文标题:Prometheus专题[8.Prometheus之Alertmanager]
- 本文作者:青叶
- 本文链接:http://qingye.info/2020/04/22/Prometheus/Prometheus-8-Alertmanager/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!