Prometheus Recording Rules 和 Alerting Rules 的区别和使用:
Recording Rules(记录规则):
- 预先计算并存储常用的查询结果
- 提高查询性能,减少计算开销
- 不会触发告警
配置示例:
yamlgroups: - name: api_recording_rules interval: 30s rules: - record: job:http_requests:rate5m expr: sum by (job) (rate(http_requests_total[5m])) - record: job:request_errors:rate5m expr: sum by (job) (rate(http_requests_total{status=~"5.."}[5m]))
使用场景:
- 频繁查询的复杂表达式
- 需要聚合多个指标的计算
- 提高仪表盘加载速度
- 减少实时查询压力
Alerting Rules(告警规则):
- 监控指标并触发告警
- 支持告警分组、抑制、静默
- 发送通知到 Alertmanager
配置示例:
yamlgroups: - name: api_alerting_rules rules: - alert: HighErrorRate expr: job:request_errors:rate5m / job:http_requests:rate5m > 0.05 for: 5m labels: severity: critical annotations: summary: "High error rate on {{ $labels.job }}" description: "Error rate is {{ $value | humanizePercentage }}"
关键区别:
| 特性 | Recording Rules | Alerting Rules |
|---|---|---|
| 目的 | 预计算查询结果 | 触发告警通知 |
| 存储 | 生成新的时间序列 | 不存储新序列 |
| 性能 | 提高查询性能 | 可能增加评估开销 |
| 使用 | 仪表盘、查询 | 监控、告警 |
最佳实践:
-
Recording Rules:
- 使用有意义的命名规范
- 合理设置评估间隔
- 定期审查和清理无用规则
- 使用
by子句进行分组
-
Alerting Rules:
- 合理设置
for参数避免误报 - 使用分级告警(info、warning、critical)
- 添加清晰的描述信息
- 使用标签便于分组和路由
- 合理设置
-
规则管理:
- 使用版本控制管理规则文件
- 使用
promtool检查规则语法 - 测试规则后再部署
- 监控规则评估性能
验证规则:
bashpromtool check rules /path/to/rules.yml