深色模式
PromQL 入门
PromQL 是查询 Prometheus 数据的语言。先搞懂“向量”和“选择器”,查询就不慌了。
适用环境
- 已部署 Prometheus 并能打开 Graph 页面(
http://<IP>:9090) - 已采集 node_exporter 指标
bash
# 通过 API 直接查,等价于页面 Graph
curl -s 'http://localhost:9090/api/v1/query?query=up' | head -c 3001
2
2
操作步骤
1. 指标名即查询
promql
node_cpu_seconds_total1
2. 标签选择器
promql
# 只选 mode="idle" 的 CPU
node_cpu_seconds_total{mode="idle"}
# 正则匹配,排除 idle
node_cpu_seconds_total{mode!="idle"}
# 多条件
node_cpu_seconds_total{instance="localhost:9100", mode=~"user|system"}1
2
3
4
5
6
2
3
4
5
6
3. 即时向量 vs 区间向量
promql
# 即时向量:当前最新值
node_cpu_seconds_total
# 区间向量:过去 5 分钟的值集合,用于 rate
node_cpu_seconds_total[5m]1
2
3
4
5
2
3
4
5
4. 计算单核 CPU 使用率
promql
1 - rate(node_cpu_seconds_total{mode="idle"}[5m])1
验证
promql
# 多核汇总成整机使用率
1 - sum(rate(node_cpu_seconds_total{mode="idle"}[5m])) / count(node_cpu_seconds_total{mode="idle"})1
2
2
常见坑
区间向量不能直接展示
xxx[5m] 不能直接画图,必须套 rate/avg_over_time 等函数转成即时向量。
标签值大小写敏感
mode="Idle" 与 mode="idle" 是不同的,查询前先用 {__name__=...} 确认真实值。