You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prometheus中查询带指定标签值的时间序列并设置采样步长

Prometheus指定event_id按固定步长查询指标的PromQL方案

前置要求

Prometheus版本≥2.25,支持min_time()、max_time()时间函数及范围子查询语法。

单指标查询示例

以查询event_id="event_123"的metric1、10秒采样步长为例,语句如下:

metric1{event_id="event_123"}[max_time(metric1{event_id="event_123"}) - min_time(metric1{event_id="event_123"}):10s]

逻辑说明:
内层先通过min_time、max_time自动计算该event_id对应指标的总存在时间跨度,外层范围查询指定采样步长为10秒,自动覆盖整个事件的完整生命周期,无需提前手动输入事件的起止时间。

多指标同时查询示例

如果需要同时返回metric1和metric2的采样结果,通过指标名正则匹配即可:

{__name__=~"metric1|metric2", event_id="event_123"}[max_time({__name__=~"metric1|metric2", event_id="event_123"}) - min_time({__name__=~"metric1|metric2", event_id="event_123"}):10s]

更高性能的API调用方案

如果是通过Prometheus HTTP API查询,推荐分两步操作降低查询性能损耗:

  • 第一步调用query接口,获取该事件对应指标的时间范围:
    执行语句min_time(metric1{event_id="event_123"})得到事件开始时间戳,执行max_time(metric1{event_id="event_123"})得到事件结束时间戳
  • 第二步调用query_range接口,start、end参数传入上一步获取的时间戳,step参数设为10s,查询语句直接写{__name__=~"metric1|metric2", event_id="event_123"}即可,返回结果就是按10秒间隔采样的指标值。

注意事项

  • 若事件持续时长极长,采样点数量超过Prometheus默认查询样本量限制,可适当调大步长,或者修改Prometheus启动参数--query.max-samples放宽限制。
  • 若使用的Prometheus版本低于2.25,无min_time、max_time函数,可直接在query_range接口传入足够大的时间范围(如过去7天),Prometheus会自动过滤无数据的时间段,仅返回该event_id存在时间段内的采样结果。

内容的提问来源于stack exchange,提问作者Anton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:51:01