乐闻世界logo
搜索文章和话题

Prometheus 的 Recording Rules 和 Alerting Rules 有什么区别?

2月21日 15:41

Prometheus Recording Rules 和 Alerting Rules 的区别和使用:

Recording Rules(记录规则)

  • 预先计算并存储常用的查询结果
  • 提高查询性能,减少计算开销
  • 不会触发告警

配置示例

yaml
groups: - 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

配置示例

yaml
groups: - 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 RulesAlerting Rules
目的预计算查询结果触发告警通知
存储生成新的时间序列不存储新序列
性能提高查询性能可能增加评估开销
使用仪表盘、查询监控、告警

最佳实践

  1. Recording Rules

    • 使用有意义的命名规范
    • 合理设置评估间隔
    • 定期审查和清理无用规则
    • 使用 by 子句进行分组
  2. Alerting Rules

    • 合理设置 for 参数避免误报
    • 使用分级告警(info、warning、critical)
    • 添加清晰的描述信息
    • 使用标签便于分组和路由
  3. 规则管理

    • 使用版本控制管理规则文件
    • 使用 promtool 检查规则语法
    • 测试规则后再部署
    • 监控规则评估性能

验证规则

bash
promtool check rules /path/to/rules.yml
标签:Prometheus