同一Pod同名容器的container_memory_working_set_bytes指标计算疑问
容器内存指标重复的取值说明
同一时间点下,同一个Pod内的同名容器出现两条container_memory_working_set_bytes指标,是因为容器重启后cadvisor未及时清理旧容器的监控数据导致的——两条指标分别对应该容器的两次运行实例:一条属于已经退出的旧容器,另一条是当前正在运行的新容器。
这种情况下,实际内存使用量应该取两者的最大值,而非求和。原因很简单:已退出的旧容器不再占用宿主机内存,只有当前活跃的容器实例的指标能反映真实的内存消耗。
背景说明
这是cadvisor的一个常见问题:当Pod内的容器重启后,cadvisor会在短时间内保留旧容器的监控指标,导致同一Pod、同名容器出现多条重复指标。这些指标通过不同的container id和name标签区分,其中只有带当前运行容器ID的指标是有效的。
实用PromQL示例
如果要在Prometheus中准确获取该容器的实际内存使用,可以用max函数按Pod和容器名称聚合:
max(container_memory_working_set_bytes{container="my-app", pod="web-5dfd4896b4-x4nsr"}) by (pod, container)
内容的提问来源于stack exchange,提问作者goulashsoup
相关产品推荐
相关产品推荐

