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

如何在Prometheus中基于指定时间范围查询营收Top5的Profile?

如何在Prometheus中正确获取指定时间范围内营收Top5的Profile

你的原始查询存在两个核心问题:

  1. Counter指标处理错误:ow_wt_revenue是Counter类型(单调递增),直接sum只会取查询时刻的累计值,而非你指定时间范围内的实际营收增量。
  2. 无效筛选条件:profile_id=~""会匹配所有不带profile_id标签的样本,等于排除了所有有效Profile数据,这必然导致结果异常。

修正后的核心查询

要统计指定时间窗口内各Profile的总营收并取Top5,使用increase函数计算Counter的增量,再按profile_id聚合排序:

topk(5, sum(increase(ow_wt_revenue{pub_id="159409"}[82800s])) by (profile_id))

这里的82800s是你的时间范围总时长(1676098800 - 1676016000 = 82800秒,即23小时)。

细节说明

  • 如果你习惯通过URL参数指定start和end,可以保持URL参数,把PromQL部分改为:
    topk(5, sum(increase(ow_wt_revenue{pub_id="159409"}[$__range])) by (profile_id))
    
    $__range是Prometheus的内置变量,会自动匹配URL中start和end之间的时间跨度,无需手动计算时长。
  • 如果需要先按小时粒度统计营收,再累加整个时间范围的总额,用以下查询:
    topk(5, sum(sum_over_time(increase(ow_wt_revenue{pub_id="159409"}[1h])[1676016000:1676098800])) by (profile_id))
    
    这个查询会先计算每个小时的营收增量,再把整个时间范围内的小时数据累加,最后取Top5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:40:19