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

如何用PromQL统计Kubernetes失败Job的变化速率?

解决Kubernetes失败Job速率统计的PromQL方案

问题根源

你用sum(rate(kube_job_failed[1m]))得不到预期结果的核心原因是:kube_job_failed在Job失败前不存在对应时间序列,而rate()要求时间窗口内至少有两个样本才能计算变化率。新出现的失败Job在窗口内只有一次采集样本,因此rate()返回0。

可用解决方案

1. 统计指定时间窗口内新增失败Job数(推荐用于速率展示)

直接计算当前失败Job总数与N分钟前总数的差值,得到这段时间内新增的失败Job数量:

count(kube_job_failed) - count(kube_job_failed offset 1m)
  • 调整offset 1m可以改变统计粒度,比如offset 30s对应30秒内的新增数量
  • 结果直观反映失败Job的生成速率,适合趋势监控

2. 用delta()计算总数变化

利用delta()函数统计失败Job总数在时间窗口内的增量:

delta(sum(kube_job_failed)[1m])
  • delta()会计算sum(kube_job_failed)在1分钟窗口首尾的数值差,效果和方案1一致
  • 适合习惯用gauge增量函数的场景

3. 生成单个失败Job的瞬时尖峰(精准定位失败时刻)

如果需要每个失败Job在图表上产生一个独立尖峰,结合changes()函数和你的Prometheus采集间隔(假设为15秒):

sum(changes(kube_job_failed[15s]))
  • changes()会统计每个时间序列在窗口内的数值变化次数,新出现的失败Job等效于从0变为1,会触发一次变化
  • 采集间隔不同时,需将窗口调整为和采集间隔一致,确保每个新增Job能被捕获一次

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:23:17