深色模式
alerting rules 编写
告警规则就是把“某个 PromQL 持续为真”翻译成“发一条告警”。从 CPU>80% 这个经典例子入手。
适用环境
- 已配置 recording rules 或可直接查询 CPU 指标
- Prometheus 已指向 Alertmanager(或仅本地评估)
bash
# 确认当前 CPU 使用率表达式可用
curl -s 'http://localhost:9090/api/v1/query?query=1-avg(rate(node_cpu_seconds_total%7Bmode=%22idle%22%7D%5B5m%5D))'1
2
2
操作步骤
1. 编写告警规则
yaml
groups:
- name: cpu_alerts
rules:
- alert: HighCpuUsage
expr: (1 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))) * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: "CPU 使用率过高 {{ $labels.instance }}"
description: "CPU 使用率持续 5 分钟超过 80%,当前 {{ $value | printf \"%.1f\" }}%"1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
2. 加载并校验
bash
promtool check rules /etc/prometheus/rules/alerts.yml
curl -X POST http://localhost:9090/-/reload1
2
2
验证
bash
# 查看当前处于 Pending/Firing 的告警
curl -s http://localhost:9090/api/v1/alerts | head -c 4001
2
2
在 Web 的 Alerts 页面也能看到规则状态。
常见坑
for 不是装饰
for: 5m 表示持续 5 分钟才 Firing,避免瞬时抖动产生噪声;但太小会频发告警。
阈值写死不易维护
生产建议把阈值抽成标签或用 recording rule,避免每条规则硬编码数字。