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

如何在Prometheus中获取指定时间范围各namespace的CPU最大值?

在指定时间范围内获取每个Namespace的CPU最大值

先搞懂两个函数的核心区别

  • max():对当前瞬间的多个时间序列取最大值(比如现在所有namespace的CPU使用率里,哪个最大),不是时间范围内的统计。
  • max_over_time(range_vector):对单个时间序列在指定时间范围内的所有样本取最大值(比如某个namespace过去1小时内的CPU峰值),这才是你要的时间范围统计。

正确的查询写法

你需要先按namespace聚合出每个时刻的总CPU使用率,再对这个聚合后的时间序列在指定时间范围内取最大值,最终的查询语句如下(以1小时时间范围为例):

max_over_time(
  sum(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{}) by (namespace)
  [1h]
)

拆解逻辑

  1. 底层聚合:sum(...) by (namespace) 是你原本的查询,它会计算每个namespace在每个时刻的总CPU使用率(已经用了预聚合的sum_rate,省去了手动写rate()的步骤),输出的是一个即时向量(每个namespace对应一个时间序列,每个序列有当前时刻的CPU值)。
  2. 时间范围取最大:把上面的即时向量套进max_over_time(...) [1h],就会对每个namespace的时间序列,统计过去1小时内所有样本的最大值,最终输出每个namespace在该时间段的CPU峰值。

注意事项

  • 把[1h]换成你需要的时间范围,比如[24h]就是过去24小时的峰值。
  • 不要搞反顺序:如果先写max_over_time再sum,会先对每个容器的CPU序列取时间范围最大值,再求和,这和你要的「namespace总CPU的峰值」逻辑完全不同,一定要先聚合到namespace维度,再做时间范围的max统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:02:20