PromQL查询语言指南 | AI生成和翻译

Home 2025.11

PromQL(Prometheus查询语言)是一种函数式查询语言,用于从Prometheus中实时选择和聚合时间序列数据。它支持即时查询(在单个时间点评估)和范围查询(在时间范围内的多个步骤评估)。PromQL表达式可以返回四种数据类型之一:即时向量范围向量标量字符串


简介

PromQL使用户能够:

表达式在Prometheus UI中评估:


时间序列选择器

时间序列选择器定义要检索的指标和标签。

即时向量选择器

选择每个匹配时间序列的最新样本。

语法

<指标名称>{<标签匹配器>}

示例

标签匹配器

注意:{job=~".+"}有效;单独的{}无效。


范围向量选择器

选择一段时间范围内的样本。

语法

<即时选择器>[<持续时间>]

示例

范围是左开右闭:排除开始时间,包含结束时间。


偏移修饰符

将评估时间向前或向后移动。

语法

<选择器> offset <持续时间>

示例

必须紧跟在选择器之后。


@修饰符

在特定时间戳评估。

语法

<选择器> @ <时间戳>

示例

可与offset结合使用。


速率和聚合

PromQL支持速率聚合运算符,用于计算随时间或跨序列的指标。

速率函数

计算每秒平均增长率。

示例

rate(http_requests_total[5m])

用于范围向量


聚合运算符

应用于即时向量以合并时间序列。

示例

聚合需要匹配的序列;使用bywithout子句。


运算符

PromQL支持多种运算符类型。

算术运算符

运算符 描述 示例
+ 加法 rate(a[5m]) + rate(b[5m])
- 减法 rate(a[5m]) - rate(b[5m])
* 乘法 http_requests_total * 60
/ 除法 rate(a[5m]) / rate(b[5m])
% 取模 http_requests_total % 100

操作数必须兼容(相同类型和形状)。


比较运算符

比较两个即时向量。

运算符 描述 示例
== 等于 rate(a[5m]) == rate(b[5m])
!= 不等于 rate(a[5m]) != 0
> 大于 http_requests_total > 100
< 小于 http_requests_total < 10
>= 大于或等于 rate(a[5m]) >= 2
<= 小于或等于 http_requests_total <= 5

返回布尔即时向量。


逻辑运算符

组合布尔表达式。

运算符 描述 示例
and 逻辑与 rate(a[5m]) > 1 and rate(b[5m]) > 1
or 逻辑或 rate(a[5m]) > 1 or rate(b[5m]) > 1
unless 排除 rate(a[5m]) unless rate(b[5m]) > 0

操作数必须是相同基数的布尔向量。


函数

PromQL包含用于转换和分析的内置函数。

常用函数

示例

quantile by (job)(0.95, http_request_duration_seconds_bucket[5m])

完整列表请参阅Prometheus函数文档


查询的HTTP API

PromQL查询可以通过HTTP API发送。

即时查询

端点/api/v1/query

方法GET

参数

示例

GET /api/v1/query?query=http_requests_total{job="prometheus"}&time=1609746000

响应:包含statusdata.result(即时向量或标量)的JSON。


范围查询

端点/api/v1/query_range

参数

示例

GET /api/v1/query_range?query=rate(http_requests_total[5m])&start=1609746000&end=1609746600&step=10s

响应:每个步骤的时间序列数据的JSON。


附加说明


本指南涵盖了PromQL的核心内容,适合初学者到中级用户。高级用法请参考Prometheus查询基础和相关页面。


Back

x-ai/grok-4-fast

Donate