已定义Pod标签时cAdvisor指标缺失container标签的原因排查
我们采用Victoria Metrics监控Kubernetes工作负载,抓取cAdvisor指标的Job配置如下:
- job_name: 'kubernetes-cadvisor' kubernetes_sd_configs: - role: node scheme: https metrics_path: /metrics/cadvisor tls_config: ca_file: $SVC_CA_CERT_PATH insecure_skip_verify: true bearer_token_file: $SVC_TOKEN_FILE_PATH
我们在Grafana中配置了多组过滤器,依赖container_cpu_usage_seconds_total指标的container和pod标签实现多环境、多集群的应用性能观测,但发现container_spec_cpu_shares指标中缺失container标签,请问原因是什么?
原因分析
- cAdvisor指标生成逻辑差异:
container_cpu_usage_seconds_total是容器运行时的实时指标,cAdvisor会为每个容器实例明确打上container标签;而container_spec_cpu_shares属于容器规格配置类指标,在节点级采集场景下,部分场景(如系统容器、未关联Pod的容器)的这类指标不会自动关联container标签。 - 采集配置的维度限制:当前Job使用
role: node的Kubernetes服务发现,采集的是节点级cAdvisor端点,部分规格类指标会以节点维度聚合输出,没有细化到单个容器的标签关联。对比运行时指标,规格类指标的标签生成逻辑更依赖容器与Pod的关联状态。 - cAdvisor版本或内置规则差异:不同版本的cAdvisor对标签的处理逻辑有区别,旧版本中
container_spec_cpu_shares仅会给关联到业务Pod的容器打上container标签,系统容器(如pause容器、kubelet相关容器)的该指标不会携带container标签。
内容的提问来源于stack exchange,提问作者pragmaticEngineer
相关产品推荐
相关产品推荐

