Prometheus cAdvisor同一容器对应多条指标条目如何正确查询资源指标
三类cAdvisor容器指标的含义说明
首先明确三类命名对应的统计实体,三者统计范围完全不同,不存在需要关联聚合的关系:
- 第一类
/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-<container>开头的条目:对应节点上cgroup的QoS层级父目录,统计的是该QoS分组下所有Pod、所有容器的资源总和,不属于单个容器的指标,数值自然会远高于单个容器。 - 第二类
k8s_<pod_name>_<container>开头的条目:对应你部署的业务容器本身,统计的就是单个业务容器的实际CPU、内存等资源占用,是查询业务容器指标的核心对象。 - 第三类
k8s_POD_<container>-<pod_uid>开头的条目:对应Kubernetes为每个Pod创建的pause基础设施容器,作用是维护Pod的网络命名空间,本身资源占用极低,和业务容器的资源统计无关。
业务容器指标查询方案
不需要聚合三类指标,直接选取第二类业务容器的条目即可完整代表对应容器的资源情况,查询时添加两个标签过滤即可排除无关条目:
container!="POD":过滤pause容器的指标container!="":过滤cgroup父层级的聚合指标(这类条目的container标签为空)
常用指标查询示例:
- 容器内存使用率
sum(container_memory_working_set_bytes{container!="",container!="POD"}) by (pod,container) / sum(kube_pod_container_resource_limits{resource="memory",container!="",container!="POD"}) by (pod,container)
- 容器CPU使用率
sum(rate(container_cpu_usage_seconds_total{container!="",container!="POD"}[2m])) by (pod,container) / sum(kube_pod_container_resource_limits{resource="cpu",container!="",container!="POD"}) by (pod,container)
内容的提问来源于stack exchange,提问作者Tony.H
相关产品推荐
相关产品推荐

