PromQL 查询¶
在图表中应用 PromQL 查询,可以帮助您从 Prometheus 数据源中提取和分析时间序列数据,并将结果直观地展示在图表中。
简单定义
PromQL 是 Prometheus 的查询语言,用于从 Prometheus 数据源中查询和操作时间序列数据。它提供了丰富的函数和操作符,支持对数据进行聚合、过滤、计算和比较,帮助用户快速提取和分析数据。
开始查询¶
- 点击“添加 PromQL 查询”;
- 选择查询方式;
- 开始查询。
查询方式¶
更多详情,可参考 DQL 与其它几种查询语言的对比;或直接前往 PromQL。
Range 查询(范围查询)¶
查询一段时间范围内的监控数据,返回一个范围向量(Range Vector),即每个时间序列在指定时间段内的多个样本值。语法需附加时间范围。
例如:
表示返回过去 5 分钟内各时间点的请求总数。
Instant 查询(即时查询)¶
查询特定时间点的监控数据,返回一个即时向量(Instant Vector),即每个时间序列在该时刻的最新样本值。
例如:
表示返回当前时刻所有满足标签条件的请求总数。
时间说明
对于即时查询(Instant Query),它基于即时向量逻辑,查询时仅使用一个结束时间(endtime)的时间戳。为了适应观测云的各种使用场景,查询引擎会根据接收到的数据进行智能处理:
-
如果识别为即时查询,引擎会使用时间范围(timerange)的结束时间作为最终查询时间戳。
-
确定 PromQL 查询的时间窗口(
step
)时,按照以下优先级:- 如果 PromQL 中指定了时间窗口(例如 [5m]),则使用该窗口值作为
step
。 - 如果未指定窗口,检查是否有时间间隔(
interval
)参数,如有则使用interval
作为step
。 - 如果没有
interval
,就使用时间范围(timerange)作为step
。 - 如果以上都不存在,引擎默认使用 5 分钟(5m)作为
step
。
- 如果 PromQL 中指定了时间窗口(例如 [5m]),则使用该窗口值作为
补充说明:范围查询(Range Query)的 step
默认值是 max(interval, max-point-window)
,即取 interval
和 max-point-window
中较大的那个值。
查询示例¶
例如,您希望监控某个区域的并发限制器是否被触发,从而及时发现潜在的性能问题或资源瓶颈。
输入上述查询语句,表示:筛选出所有 guance_concurrent_limiter_current
指标的值大于 0 的数据点,并且这些数据点的 region
标签值为 #{region}
。
假设 region
的值为 us-west-1
,那么实际查询语句会变成:
这个查询会返回所有 region
为 us-west-1
且 guance_concurrent_limiter_current
指标的值大于 0 的时间序列数据。
语句格式
标签值的动态替换:#{region}
是一个占位符,需要在实际查询中被具体的值替换。确保在查询时正确替换了占位符。
应用场景¶
在 PromQL 查询接口定义中,有 3 个参数用于控制查询的数据处理表现,分别是 interval
、timerange
和 align_time
,其含义如下:
字段 | 描述 |
---|---|
timerange |
查询数据的时间范围 |
interval |
数据点之间的时间间隔 |
align_time |
值:true 、false 。联动 interval 、timerange 参数,若值为 true ,则根据 interval 时间间隔重新调整 timerange 范围,一般逻辑为向前偏移。 |