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

如何获取Prometheus中首个与最后一个指标的时间差?

解决Gauge指标首尾数据点时间差计算问题

要计算my_metric{job="1"}首个与最后一个数据点的时间差,你需要利用PromQL的first_over_time和last_over_time函数分别获取首尾点的时间戳,再做差值计算,具体实现如下:

正确查询语句

# 计算首尾时间差(单位:秒)
timestamp(last_over_time(my_metric{job="1"}[24h])) - timestamp(first_over_time(my_metric{job="1"}[24h]))

# 转换为分钟单位
(timestamp(last_over_time(my_metric{job="1"}[24h])) - timestamp(first_over_time(my_metric{job="1"}[24h])))/60

你的错误原因解析

  1. delta函数的参数限制:delta()要求输入为范围向量,但你传入的timestamp(my_metric)是即时向量,不符合函数要求,因此报错。
  2. 范围向量的语法错误:范围标识[1h]只能直接跟在原始指标选择器后(如my_metric{job="1"}[1h]),不能附加在函数调用结果上,这是第二次报错的核心原因。

关键注意事项

  • 语句中的[24h]需根据你的实际数据时间跨度调整,确保该范围能完整覆盖my_metric{job="1"}的第一个和最后一个数据点。
  • first_over_time返回范围向量内的首个样本值,last_over_time返回最后一个样本值,通过timestamp()提取两者的时间戳后,差值即为两个点的时间间隔。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:39:56