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

Prometheus标签与向量推送时间戳比较:统计指定范围向量数量

解决PromQL中按样本推送时间筛选label时间戳的统计需求

我来帮你搞定这个查询需求!你要的是统计那些label(UTC时间戳字符串)落在样本自身推送时间前一天到推送时间之间的向量数量,对吧?下面一步步拆解实现思路和具体语句:

核心思路拆解

首先得明确两个关键时间维度:

  • 样本的推送时间戳T():在PromQL里用timestamp(your_metric)获取,这是每个样本自身的上报时间,别和当前查询时间time()搞混——time()是固定的查询触发时间,而每个样本的推送时间是它独有的timestamp。
  • label的时间戳:因为它是字符串格式,得先用parse_time()把它转成秒级数值时间戳,才能和推送时间做数值比较。

基础查询:统计当前符合条件的样本数量

直接用count()结合筛选条件,就能得到当前时刻符合要求的向量总数:

count(
  your_metric_name
  where parse_time(label) >= timestamp(your_metric_name) - 1d
  and parse_time(label) <= timestamp(your_metric_name)
)

这里1d是PromQL支持的直观时间单位,等价于86400秒,写起来比硬编码秒数更易读。

时间范围统计:过去7天内的数量变化

如果你想查看过去7天里每天(或固定步长)的符合条件样本数,就用count_over_time()配合范围向量语法:

count_over_time(
  your_metric_name
  where parse_time(label) >= timestamp(your_metric_name) - 1d
  and parse_time(label) <= timestamp(your_metric_name)
)[7d:1d]
  • [7d:1d]表示查询过去7天的数据,按1天的步长聚合,返回每天的统计结果。
  • 如果需要更细的粒度(比如每小时统计),把步长改成1h即可。

注意事项

  • 确保label的时间戳字符串是parse_time能识别的标准UTC格式(比如2024-05-20T12:34:56Z),否则转换会返回NaN,对应样本会被过滤掉。
  • 如果你的label时间戳是毫秒级的,需要先除以1000转成秒级再比较,比如parse_time(label)/1000,具体要匹配你的时间戳格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:19:10