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 的查询机制?前往官方文档 查看完整查询语法说明和进阶用法。

Prometheus
Time_Series