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

如何在Prometheus/PromQL中获取多时间序列的最新值

解决方案

要从多个instance的序列中取出所有样本里时间戳最新的那个值,需要分两步处理:

  1. 先获取每个instance序列在时间窗口内的最后一个样本(保留原始时间戳),用last_over_time实现:

    last_over_time(my_metric{type="user"}[5m])
    

    这一步会返回每个instance的最新值,但仍会保留多个时间序列。

  2. 对这些序列按时间戳降序排序,然后取第一个元素(即时间戳最新的那个值),用sort_desc结合切片语法实现:

    sort_desc(last_over_time(my_metric{type="user"}[5m]))[0:1]
    

原理说明

  • last_over_time仅对单个时间序列生效,返回该序列窗口内最后一个样本,因此会保留所有instance对应的序列。
  • sort_desc会将所有序列按样本的原始时间戳从新到旧排序(注意:排序依据是样本自身的时间戳,而非当前查询时间)。
  • [0:1]是PromQL的切片语法,取排序后的第一个元素,也就是所有样本里时间戳最新的那个值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:54:55