Prometheus PromQL 入门与实践
PromQL(Prometheus Query Language)是 Prometheus 监控系统的查询语言,也是整个云原生监控体系的核心。无论是构建 Grafana 仪表盘、编写告警规则,还是进行故障排查时的临时查询,都离不开 PromQL。我将从数据模型出发,逐步深入到聚合操作、常用函数和实战查询,最后覆盖子查询等高级技巧。 参考来源:Prometheus 官方文档 — Querying basics 一、PromQL 数据模型 PromQL 有四种基本数据类型,理解它们是写对查询的前提: 类型 说明 示例 即时向量(Instant Vector) 一组时间序列在当前时刻的采样值 node_cpu_seconds_total 范围向量(Range Vector) 一组时间序列在过去一段时间内的所有采样值 node_cpu_seconds_total[5m] 标量(Scalar) 一个简单的数值 3.14、1024 字符串(String) 字符串值(较少使用) "hello" 最常用的两种: 即时向量:仪表盘和告警中最常见,返回"当前这一刻"各序列的值。 范围向量:用于 rate()、increase() 等函数计算,必须带时间窗口 [...]。 # 即时向量:返回当前所有序列 up # 范围向量:返回过去5分钟内的所有采样点 up[5m] # 标量 1 - 0.3 二、基础查询 2.1 Metric 选择与标签过滤 通过标签选择器可以精确过滤目标序列: # 选择名为 node_cpu_seconds_total 的所有序列 node_cpu_seconds_total # 按 mode 标签过滤 node_cpu_seconds_total{mode="idle"} # 多标签组合(AND 关系) node_cpu_seconds_total{instance="node-1:9100", mode="idle"} # 标签正则匹配 node_cpu_seconds_total{instance=~"node-[0-9]+:9100"} # 标签反向匹配(排除某些值) node_cpu_seconds_total{mode!...