深色模式
recording rules 预计算
当同一个复杂 PromQL 被大盘和告警反复查询时,把它“物化”成一条新指标,省 CPU 又提速。
适用环境
- Prometheus 已运行,能加载规则文件
- 有需要被反复查询的复杂表达式
bash
# 规则文件一般放这里
ls /etc/prometheus/rules/ 2>/dev/null || echo "尚未创建"1
2
2
操作步骤
1. 编写规则文件
yaml
groups:
- name: node_rules
interval: 30s
rules:
- record: instance:node_cpu_util:ratio
expr: 1 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))
- record: job:up:count
expr: count by (job) (up)1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
2. 在 prometheus.yml 引用
yaml
rule_files:
- /etc/prometheus/rules/*.yml1
2
2
3. 校验并热加载
bash
promtool check rules /etc/prometheus/rules/node.yml
curl -X POST http://localhost:9090/-/reload1
2
2
验证
promql
# 直接查询预计算出的指标
instance:node_cpu_util:ratio1
2
2
常见坑
命名要有层次
推荐 level:metric:operation 风格(如 instance:cpu:ratio),避免和原始指标混淆。
别在 record 里再套 record 造成雪崩
规则依赖链过长会让评估时间成倍增长,保持一层依赖为宜。