1. 前言
本文中,我们学习配置Prometheus的告警规则。
参考文档:
2. Prometheus告警流程
2.1. 1. 定义告警规则
告警规则是通过PromQL表达式来定义的,当表达式查询结果满足一定条件时,就会触发告警。告警规则通常包括以下几个部分:
- 告警名称
- PromQL表达式
- 持续时间(duration)
- 标签(labels)
- 注解(annotations)
告警规则可以定义在Prometheus的配置文件中,也可以通过API动态添加。
2.2. 2. Prometheus Server触发告警
Prometheus Server会定期(默认每分钟)评估所有的告警规则,如果某个规则的PromQL表达式在持续时间内一直满足,就会触发相应的告警。
2.3. 3. 告警发送到Alertmanager
Prometheus Server将触发的告警发送到Alertmanager组件。Alertmanager负责对告警进行去重、分组、路由等处理。
2.4. 4. Alertmanager发送告警通知
Alertmanager根据配置的路由规则,将告警发送到指定的接收器,如邮件、PagerDuty、Slack、Webhook等。
2.5. 5. 消息中转服务
如果Alertmanager把消息发送到了Webhook(消息中转服务),那么消息中转服务会再次进行消息转发,转发给微信、钉钉、飞书等平台。
3. 配置告警规则
3.1. 配置告警规则概述
从上一节【Prometheus告警流程】中我们可以得知,Prometheus的告警流程跑通后,后续增删改告警,实际上就是配置告警规则。
配置告警规则的一般流程为:
1、准备告警语句
2、Prometheus添加告警规则
3、模拟告警
3.2. 准备告警语句
准备告警语句有两种方法:一种是从网上获取成熟的告警语句;另一种是自己调试告警语句。
自己调试告警语句的方法如下:
1、查看监控指标
访问Grafana Dashboard,点击一个panel的Edit,可以看到panel使用的变量,以及变量的PromQL计算方法。
2、编写PromQL语句
访问Grafana Explore页面,左上角数据源选择Prometheus。
参考panel,选择合适的指标,编写PromQL,计算出自己想要用来报警的指标
以CPU使用率为例:
1 | 100 - (avg by (environment,instance) (irate(node_cpu_seconds_total{job="node-exporter",mode="idle"}[5m]))) * 100 |
以内存使用率为例:
1 | 100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes) |
3.3. 配置告警
假设规则文件路径为 /opt/prometheus/conf/rules
1、创建告警规则
1 | vim /opt/prometheus/conf/rules/host.rules |
host.rules内容为:
1 | groups: |
告警规则里的expr
,是根据【准备告警语句】一节中获取到的PromQL语句改写的。
2、修改prometheus server配置
prometheus.yml 修改为:
1 | alerting: |
3、重载或者重启prometheus server
1 | curl -X POST http://localhost:9090/-/reload |
3.4. 模拟告警
1、模拟CPU使用率升高
1 | yum install stress-ng |
2、查看告警触发情况
http://192.168.56.101:9090/alerts
http://192.168.56.101:9093/#/alerts
3、查看群能否收到告警