跳转至

PromQL 查询


在图表中应用 PromQL 查询,可以帮助您从 Prometheus 数据源中提取和分析时间序列数据,并将结果直观地展示在图表中。

简单定义

PromQL 是 Prometheus 的查询语言,用于从 Prometheus 数据源中查询和操作时间序列数据。它提供了丰富的函数和操作符,支持对数据进行聚合、过滤、计算和比较,帮助用户快速提取和分析数据。

开始查询

  1. 点击“添加 PromQL 查询”;
  2. 选择查询方式
  3. 开始查询。

查询方式

更多详情,可参考 DQL 与其它几种查询语言的对比;或直接前往 PromQL

Range 查询(范围查询)

查询一段时间范围内的监控数据,返回一个范围向量(Range Vector),即每个时间序列在指定时间段内的多个样本值。语法需附加时间范围。

例如:

[5m]):http_requests_total{job="api-server"}[5m]

表示返回过去 5 分钟内各时间点的请求总数。

Instant 查询(即时查询)

查询特定时间点的监控数据,返回一个即时向量(Instant Vector),即每个时间序列在该时刻的最新样本值。

例如:

http_requests_total{job="api-server"}

表示返回当前时刻所有满足标签条件的请求总数。

时间说明

对于即时查询(Instant Query),它基于即时向量逻辑,查询时仅使用一个结束时间(endtime)的时间戳。为了适应观测云的各种使用场景,查询引擎会根据接收到的数据进行智能处理:

  • 如果识别为即时查询,引擎会使用时间范围(timerange)的结束时间作为最终查询时间戳。

  • 确定 PromQL 查询的时间窗口(step)时,按照以下优先级:

    • 如果 PromQL 中指定了时间窗口(例如 [5m]),则使用该窗口值作为 step
    • 如果未指定窗口,检查是否有时间间隔(interval)参数,如有则使用 interval 作为 step
    • 如果没有 interval,就使用时间范围(timerange)作为 step
    • 如果以上都不存在,引擎默认使用 5 分钟(5m)作为 step

补充说明:范围查询(Range Query)的 step 默认值是 max(interval, max-point-window),即取 intervalmax-point-window 中较大的那个值。

查询示例

例如,您希望监控某个区域的并发限制器是否被触发,从而及时发现潜在的性能问题或资源瓶颈。

dataplatform:system_concurrent_limiter_current{region="#{region}"} > 0

输入上述查询语句,表示:筛选出所有 system_concurrent_limiter_current 指标的值大于 0 的数据点,并且这些数据点的 region 标签值为 #{region}

假设 region 的值为 us-west-1,那么实际查询语句会变成:

dataplatform:system_concurrent_limiter_current{region="us-west-1"} > 0

这个查询会返回所有 regionus-west-1system_concurrent_limiter_current 指标的值大于 0 的时间序列数据。

语句格式

标签值的动态替换:#{region} 是一个占位符,需要在实际查询中被具体的值替换。

筛选条件

在 PromQL 模式下,筛选条件仅支持 label 字符串匹配,系统会自动将符合条件的筛选转换为 PromQL label matcher。

支持的转换规则

筛选条件 转换结果 说明
多个 AND 条件 逗号连接 例如 a="1" AND b="2" 转换为 a="1", b="2"
同 label 多值 OR 正则匹配 例如 a="1" OR a="2" 转换为 a=~"1\|2"
等值匹配 =!= 直接转换为 PromQL 等值匹配
正则匹配 =~!~ 直接转换为 PromQL 正则匹配

不支持的筛选

以下筛选条件暂不支持:

  • 不同 label 之间的 OR

  • 数值比较(>、<、>=、<=)

  • 函数类筛选

应用场景

在 PromQL 查询接口定义中,有 3 个参数用于控制查询的数据处理表现,分别是 intervaltimerangealign_time,其含义如下:

字段
描述
timerange 查询数据的时间范围
interval 数据点之间的时间间隔
align_time 值:truefalse
联动 intervaltimerange 参数,若值为 true,则根据 interval 时间间隔重新调整 timerange 范围,一般逻辑为向前偏移。

文档评价

文档内容是否对您有帮助? ×