6.Prometheus 监控技术与实践 --- 告警处理
Posted enlyhua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.Prometheus 监控技术与实践 --- 告警处理相关的知识,希望对你有一定的参考价值。
第6章 告警处理
在 prometheus 监控体系中,指标的采集存储于告警是分开的。告警规则是在 prometheus server 端定义的,告警规则被触发后,才会将信息发送给独立组件
Alertmanager 上,经过对告警的处理后,最终通过接收器通知用户。
6.1 概述
6.2 Alertmanager部署
6.2.1 Alertmanager机制
Prometheus server 和 Alertmanager 是互相分离的两个组件,我们使用 prometheus server 采集各类监控指标,然后基于 PromQL 对这些指标定义
阈值告警规则(Rules)。prometheus server 对告警规则周期性的进行计算,如果满足触发条件,便生成一条告警信息,并将其推送到 Alertmanager 组件。收到
告警信息后,Alertmanager 会处理告警,进行分组(grouping)并将它们最终路由(routing)到正确的接收器(receiver)。
在prometheus 中,我们不仅可以对一条告警规则进行命名并通过 PromQL 定义规则,更多的时候是对相关的多条告警进行分组后统一定义。
1.告警分组(Grouping)
Alertmanager 将同类型的告警进行分组,合并多条告警到一个通知中。
2.告警抑制(Inhibition)
当某告警已经发出,停止重复发送由此告警引发的其他异常或故障的告警机制。
3.告警静默(Silences)
告警静默提供了一个简单的机制,可以根据标签快速对告警进行静默处理。对传入的告警进行匹配检查,如果接收到的告警符合静默的配置,Alertmanager不会发送
告警通知。
6.2.2 使用二进制文件方式安装
https://prometheus.io/download/
6.2.3 使用Docker安装
docker pull prom/alertmanager
docker run -p 9093:9093 -v /Users/weijianhua/Sites/config_file/prometheus/alertmanager/simple.yml:/etc/alertmanager/simple.yml --name alertmanager prom/alertmanager
6.3 Alertmanager配置
6.3.1 global
全局配置均为公共设置,可以作为其他配置下的默认值,也可以被其他配置项中的设置覆盖。
6.3.2 templates
告警模板可以自定义告警通知的外观格式及其包含的对应告警数据。
6.3.3 route
告警路由模块描述了在收到 prometheus server 生成的告警后,将告警发送到 receiver 指定的目的地址的规则。
6.3.4 receivers
接收器是一个统称,每一个 receiver 需要设置一个全局唯一的名称,并且对应一个或者多个通知方式。
6.3.5 inhibit_rules
在 inhibit_rule 模块中设置实现告警抑制功能,我们可以指定在特定条件下要忽略的告警条件。
https://prometheus.io/webtools/alerting/routing-tree-editor/
6.4 Prometheus告警规则
6.4.1 与Alertmanager关联
prometheus 把生产的告警发送给 Alertmanager 进行告警处理时,需要在prometheus 使用的配置文件中添加关联 Alertmanager 组件的对应配置内容。
1.编辑 prometheus.yml 文件中加入关联 Alertmanager 组件的访问地址。
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.186.7:9093
2.添加监控 Alertmanager 与监控 prometheus 操作过程一样,Alertmanager 公开了相关指标。可以在 prometheus.yml 文件中创建一个 prometheus job
来监控 Alertmanager 组件示例地址,内容如下:
- job_name: 'Alertmanager'
static_configs:
- targets: ['192.168.186.7:9093']
//查看配置内容
http://localhost:9090/config
6.4.2 告警规则
告警规则文件使用yaml格式进行定义,在 prometheus server 中使用 PromQL 配置实际告警触发条件,prometheus 会根据告警规则及配置周期进行周期性的计算,
若触发条件则会发告警通知。告警规则加载是在 prometheus.yml 文件中进行配置,默认情况下 prometheus 对设置的告警规则进行计算的时间间隔是 1分钟,可以使用global
中的 evaluation_interval 配置项设置间隔时间。例如:
global:
evaluation_interval: 15s
告警规则可以直接指定文件,也可以指定到特定的目录下,为了方便管理可以把告警规则拆分成多个文件,以特定命名格式被 prometheus.yml 指定后加载,如:
rules_files:
- '/data/prometheus/rules/*._rules.yml'
- 'second_rules.yml'
一个告警信息在生命周期内可能会有三种状态:
1.Interval,没有满足触发条件,告警未激活状态
2.Pending,已满足触发条件,但为满足告警持续时间的状态,即为满足告警中for子句中指定的持续时间
3.Firing,已满足触发条件且已经超过for子句中指定的持续时间时的状态
带有 for 子句的告警将首先转换为 pengding 状态,然后转换为 firing 状态,至少需要2个计算周期才触发告警。从pending状态到firing状态的转换,确保了告警的
有效性。而没有for子句的告警自动会从 Inactive 状态转换为 Firing 状态,只需要一个计算周期即可被触发。
prometheus 从收集监控目标开始,到触发一条告警的过程:
1.定义规则
2.周期计算
3.告警状态转换
6.4.3 使用模板
模板是在告警中使用时间序列数据的标签和值的一种方法,可以用于告警规则中的注释和标签。
6.5 告警接收器
6.5.1 Email接收告警
1.修改 Alertmanager 默认配置文件,在 global 中添加全局的 smtp 配置信息。
2.在配置文件的 receivers 模块中配置 email_configs 内容
6.5.2 企业微信接收告警
6.5.3基于Webhook的钉钉接收告警
6.5.4 告警通知模板
6.6 告警临时静默
静默是使告警在给定时间内暂时静音的一种方法。我们可以通过两种方法来完成静默设置:一种是通过 Alertmanager Web 控制台控制;一种是通过 amtool 命令行设置。
1.打开 http://localhost:9093/#/silences
2.New Silence
以上是关于6.Prometheus 监控技术与实践 --- 告警处理的主要内容,如果未能解决你的问题,请参考以下文章
3.Prometheus 监控技术与实践 --- Exporter