Prometheus 规则(Rule)是什么?
Prometheus 规则(Rule)分录制规则与告警规则两种:录制规则预计算重查询生成新指标,告警规则按表达式触发告警送 Alertmanager。本文讲解规则文件写法、评估机制与两类规则的选用。
规则是写在 YAML 文件里、由 Prometheus 周期性评估的 PromQL 表达式——产出新指标的叫录制规则(Recording Rule),产生告警事件的叫告警规则(Alerting Rule)。
录制规则:预计算
groups:
- name: precompute
interval: 30s
rules:
- record: job:http_requests:rate5m
expr: sum by (job) (rate(http_requests_total[5m]))
把重查询的结果存成新指标 job:http_requests:rate5m——仪表盘直接查它,秒开。面板慢查询的标准优化手段。
告警规则:触发告警
groups:
- name: alerts
rules:
- alert: HighErrorRate
expr: sum(rate(http_errors_total[5m])) / sum(rate(http_requests_total[5m])) > 0.05
for: 10m
labels: {severity: critical}
annotations:
summary: "错误率超 5%({{ $value | humanizePercentage }})"
for:持续 10 分钟才触发,避免瞬时抖动;labels:路由与抑制用;annotations:通知文案,支持模板插值。
评估机制
规则按 group 的 interval 周期评估;promtool check rules rules.yml 可在部署前做语法校验。
观测云对照
观测云的监控器就是告警规则的产品化:DQL 表达式、持续时长、告警等级、通知对象(钉钉/企微/飞书)全部界面化配置,还支持突变/区间/无数据等检测模式,无需维护规则文件与 Alertmanager。
常见问题(FAQ)
Q:规则放哪个目录? prometheus.yml 的 rule_files 指定,支持通配符多个文件。
Q:录制规则会补算历史吗? 不会,只从生效时刻开始产出新指标。
Q:告警规则评估失败怎么看? UI 的 Alerts 页与 prometheus_rule_evaluation_failures_total 指标。