Grafana 面板显示 “No Data”,但 Pod 状态是 Running,该如何排查?
2026-08-11 01:06:54
# 监控
Grafana 面板一片空白、显示 “No Data”,但 kubectl get pod 明明是 Running——这是监控排障里非常“反直觉”又令人崩溃的场景。它的本质往往是:数据链路中某一处的“标签(Label)”对不上,而不是真的没有数据。
记住一句话:“有数据”不等于“能展示”。
排查三板斧
1. 先确认数据是否真的存在
不要一上来就死磕 Grafana。直接打开 Prometheus UI 的 Graph 页面,用完全相同的 PromQL 查询一遍:
- 如果 Prometheus 里也查不到 → 问题在采集侧(Exporter / 配置)。
- 如果 Prometheus 里有数据、Grafana 没有 → 问题在展示侧(查询/标签)。
2. 检查指标拉取配置
以 kube-prometheus-stack 为例,一个常见坑是:默认仪表盘的某些查询会用 container!="" 来过滤数据,但 cAdvisor 指标的 container 标签在某些情况下是空的,于是数据被一刀切掉了。
一个实用的修复方式:把过滤条件从
container!=""改成pod!=""。
3. 标签(Label)对齐
Grafana 面板查询语句里使用的标签,必须和 Prometheus 实际采集到的标签完全一致。多一个、少一个、拼错一个,都会让查询结果为空。可以用 Prometheus → Status → Targets / Service Discovery 核对真实标签。
小结
No Data 八成是标签/过滤条件不匹配导致的“假象”,沿着“Prometheus 有没有 → 查询条件对不对 → 标签一不一致”这条线走,基本都能解决。