PromQL(Prometheus Query Language)是 Prometheus 监控系统的核心组件之一,用于对时间序列数据进行灵活高效的查询与分析。它结合了表达式语言和函数库,支持复杂的数据聚合和可视化需求。
基本语法概览 📚
PromQL 的查询基于 时间序列,每个指标(Metric)包含多个标签(Labels)和时间点数据。核心语法包括:
- 指标选择器:通过
metric_name{label="value"}
指定目标指标 - 运算符:如
+
,-
,*
,/
,and
,or
等 - 函数:如
avg_over_time
,max
,count
,changes
等 - 聚合:支持按时间窗口或标签分组的统计计算
例如:
avg_over_time(cpu_usage{job="webserver"}[1m])
常用操作符 🛠
操作符 | 功能 | 示例 |
---|---|---|
+ |
加法 | http_requests_total{job="api"} + http_requests_total{job="db"} |
- |
减法 | http_latency_seconds{job="api"} - http_latency_seconds{job="db"} |
* |
乘法 | rate(http_requests_total{job="api"}[5m]) * 100 |
/ |
除法 | avg(http_requests_total{job="api"}) / count(http_requests_total{job="api"}) |
and |
逻辑与 | http_requests_total{job="api"} and instance="localhost" |
or |
逻辑或 | http_requests_total{job="api"} or http_requests_total{job="db"} |
实用场景 🌐
- 监控指标:
up{job="node_exporter"}
查询节点存活状态 - 告警规则:
changes(node_cpu_seconds_total{mode="idle"}[1h]) > 5
检测CPU空闲率突变 - 可视化分析:
histogram_quantile(0.95, sum by (le) (rate(http_request_duration_seconds_bucket{job="api"}[5m])))
计算请求延迟的95%分位数
扩展阅读 📚
想要深入了解 Prometheus 的查询机制?前往官方文档 查看完整查询语法说明和进阶用法。