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

关于container_cpu_usage_seconds_total指标中image!=""过滤的困惑求解

关于container_cpu_usage_seconds_total使用image!=""的差异解析

核心原因:指标统计范围的差异

container_cpu_usage_seconds_total是Prometheus采集的容器CPU累计使用时间指标,它会覆盖所有容器相关实体,主要分为两类:

  • 业务容器:带有合法image标签,对应实际部署的业务镜像;
  • 系统/辅助容器:比如Kubernetes的pause容器、容器运行时(Docker/containerd)的内部管理容器、kubelet关联的监控容器等,这类容器的image标签常为空,或使用特殊系统镜像。

两个表达式的本质区别在于统计范围:

  1. sum(rate(container_cpu_usage_seconds_total{}[$__rate_interval]))
    该表达式会统计所有匹配指标名称的时间序列,包含业务容器和系统/辅助容器的CPU消耗,因此总和数值更大。
  2. sum(rate(container_cpu_usage_seconds_total{image!=""}[$__rate_interval]))
    该表达式仅过滤出image标签不为空的容器(即业务容器),排除了系统/辅助容器的CPU消耗,所以总和会显著降低。

结果几乎翻倍的原因

你的环境中,系统/辅助容器的总CPU消耗规模,刚好和业务容器的CPU消耗相当,因此过滤掉这部分后,统计结果几乎减半。这种情况在资源紧张的节点,或系统组件较多的集群中较为常见。

场景选择建议

  • 若需统计业务容器的总CPU使用率:使用{image!=""}过滤,必要时可配合namespace标签进一步限定业务命名空间,避免混入系统资源消耗;
  • 若需统计节点所有容器(含系统组件)的总CPU消耗:无需添加image!=""过滤。

内容的提问来源于stack exchange,提问作者Mohamed Aziz Tousli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:43:15