跳转至

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 中较大的那个值。

查询示例

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

guancedb:guance_concurrent_limiter_current{region="#{region}"} > 0

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

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

guancedb:guance_concurrent_limiter_current{region="us-west-1"} > 0

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

语句格式

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

应用场景

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

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

文档评价

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