Grafana Dashboard指定namespace下Pod下拉为None 实际存在运行Pod问题咨询
问题排查解决方法
问题背景:选定namespace后Pod下拉列表为空,但对应namespace下有运行中的Pod,Prometheus采集正常
问题截图:
该问题是导入的旧版本Kubernetes监控模板和当前环境的cAdvisor指标标签不兼容导致,可按以下步骤排查解决:
1. 优先验证指标标签匹配问题(90%以上场景为该原因)
新版cAdvisor输出的容器指标中,Pod名称的标签已从旧版的pod_name修改为pod,和你当前配置中的查询语句不匹配:
- 登录Prometheus的Web查询界面,执行以下查询,替换为你实际的目标命名空间:
sum(container_memory_working_set_bytes{namespace="测试用的存在的命名空间"}) by (pod) - 如果查询有返回结果,即可确认是标签名不匹配的问题。
2. 修改Grafana Pod变量配置
进入Dashboard设置→变量→找到名为pod的变量,修改两处配置:
- 查询语句修改为(添加
container!=""过滤pause容器,避免出现无效值):query_result(sum(container_memory_working_set_bytes{namespace="$namespace",container!=""}) by (pod)) - 正则提取规则修改为:
/pod=\"(.*?)\"/
保存配置后刷新Dashboard,Pod下拉列表即可正常加载。
3. 其他异常场景排查
如果修改后仍无结果,按以下步骤排查:
- 验证
$namespace变量取值是否正常:将查询语句中的$namespace替换为固定的存在的命名空间测试,如果能返回Pod列表,说明namespace变量配置有误,检查namespace变量的查询规则是否正确。 - 验证Prometheus采集规则:确认
container_memory_working_set_bytes指标存在对应命名空间的Pod数据,检查是否有指标丢弃、权限不足等采集异常。
内容的提问来源于stack exchange,提问作者Vidya
相关产品推荐
相关产品推荐


