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

如何使用Prometheus查询Kubernetes集群Pod过去24小时运行时长

解决方案

前置配置调整(解决已删除Pod指标丢失问题)

你遇到的已终止删除Pod无数据问题,是kube-state-metrics默认在Pod删除后立即停止暴露对应指标,叠加Prometheus 5分钟 stale 标记机制导致的。可先调整配置保证指标覆盖:

  • 修改kube-state-metrics启动参数,添加--metric-ttl=25h,比你需要查询的24小时多保留1小时即可,确保24小时内删除的Pod指标不会立即消失
  • 若无法修改kube-state-metrics配置,只要Prometheus的数据保留周期大于24小时,也可以直接通过PromQL从历史存储中拉取数据,无需调整配置

最终PromQL查询语句

(
  last_over_time(kube_pod_completion_time[24h]) 
  OR 
  (time() * on(namespace,pod) group_left() last_over_time(kube_pod_status_phase{phase="Running"}[24h]) == 1)
)
- on(namespace,pod) group_left()
last_over_time(kube_pod_created[24h])

语句逻辑说明

  • 用last_over_time(kube_pod_completion_time[24h])获取过去24小时内所有已终止Pod的结束时间
  • 用OR分支处理运行中Pod:没有结束时间的情况下,用当前时间time()作为终止时间,匹配规则为对应Pod过去24小时内有Running状态的记录
  • 所有指标都用last_over_time([24h])包裹,主动拉取过去24小时内出现过、当前已经消失的历史Pod指标,规避Prometheus默认的stale标记规则
  • 计算结果单位为秒,需要换算为小时的话将整个语句除以3600即可

结果验证

  • 运行中Pod返回值=当前时间 - Pod创建时间
  • 已终止Pod返回值=Pod终止时间 - Pod创建时间
  • 24小时内创建后又删除的Pod会正常出现在结果列表中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:36:04