修改cAdvisor的Prometheus采集job标签导致Grafana仪表盘异常
修复方案
根因说明
kube-prometheus-stack 内置的Grafana Kubernetes监控仪表盘,默认所有cAdvisor相关指标的PromQL查询都绑定了默认采集任务的job标签值(通常为kubelet)。你为适配VPA修改采集任务名为kubernetes-cadvisor后,原有查询匹配不到指标,因此出现无数据提示。
修复方法(推荐优先使用第一种)
方法1:新增标签重写规则适配双场景
无需修改Grafana仪表盘,只需在你的采集配置中新增一条relabel规则,给cAdvisor指标额外添加原有默认的job标签即可同时满足VPA和Grafana的匹配需求。
修改values.yaml中additionalScrapeConfigs的对应配置:
additionalScrapeConfigs: - job_name: 'kubernetes-cadvisor' scheme: https metrics_path: /metrics/cadvisor tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) # 新增以下配置,额外保留原有job标签 - target_label: job replacement: kubelet
修改完成后执行helm upgrade更新配置即可,1-2分钟后Grafana图表就会恢复正常。
方法2:修改Grafana全局变量适配自定义job名
如果不想修改采集配置,可以直接调整Grafana仪表盘的全局job变量:
- 打开无数据的CPU仪表盘,点击右上角齿轮图标进入仪表盘设置
- 左侧菜单选择「变量」,找到名称为
cadvisor_job、kubelet_job的变量 - 将变量的默认值修改为
kubernetes-cadvisor,保存时勾选「应用到当前文件夹所有仪表盘」 - 若要避免后续helm升级覆盖配置,可在values.yaml中添加以下配置固化变量:
grafana: dashboards: kubernetes: values: cadvisorJob: kubernetes-cadvisor
方法3:调整VPA配置适配原有采集规则
如果你后续不需要保留自定义的cAdvisor采集job名,也可以直接修改VPA Recommender的启动参数,指定它使用原有默认的kubelet job名来读取指标,对应启动参数为--prometheus-job-name=kubelet。
内容的提问来源于stack exchange,提问作者Søren Pedersen
相关产品推荐
相关产品推荐

