出现 Grafana 里 No data,通常不是 Grafana 本身的问题,而是 数据源(Prometheus)没有采集到 windows_exporter 指标 或者 查询的指标/时间范围不匹配。按下面顺序排查,基本都能定位到点。
1)先确认:Prometheus 里有没有 windows_exporter 指标
在浏览器打开 Prometheus 的目标页/查询页(如果你有):
- 去
Status -> Targets看 windows_exporter 是否是 UP - 再在 Prometheus 的 Graph 里直接输入你要查的指标(例如):
upwindows_cpu_time_totalwindows_os_version_infowindows_memory_available_bytes
判断:
- 如果输入
up查不到/结果为 0 或空:说明采集没成功(多半是端口/地址/防火墙/配置问题)。 - 如果能查到指标值,但 Grafana 仍 No data:多半是 Grafana 的 Data source 配置或查询语句/筛选条件不对。
2)检查 windows_exporter 是否“暴露了指标”
在 windows_exporter 所在机器上(或从 Grafana/Prometheus 所在机器)访问:
http://<windows_exporter_host>:9182/metrics
你应该能看到一大堆类似:
windows_cpu_time_total{...} ...windows_memory_available_bytes ...
如果 /metrics 打不开或为空:
- windows_exporter 没启动 / 端口不对
- Windows 防火墙没放行 9182
- 绑定地址导致“只能本机访问”(例如只绑了 127.0.0.1)
3)Prometheus 是否把目标加进了采集配置
检查 Prometheus 的 prometheus.yml 里 job 配置(targets 应该指向 windows_exporter:9182):
- 目标 IP/端口写没写对
- 是否少了
scrape_configs或 job 名不同导致你 Grafana 查错了 label
4)Grafana 的 Data Source 是否指向对的 Prometheus
在 Grafana:
-
Settings -> Data sources确认 Prometheus URL 是你实际在跑的那个 - 有些人会搞多个 Prometheus,Grafana 指到“空的那个”
5)Grafana 查询里用了错误的 label/instance
你截图里有筛选项 instance 192.168.1.10:9182。建议你在 Prometheus Graph 里看真实的 label:
举例:执行
up{instance="192.168.1.10:9182"}
如果 Prometheus 里实际显示的 instance label 不是这个值(比如是 192.168.1.10:9182/metrics 或者 job 不同),Grafana 就会 No data。
6)时间范围问题(Last 3 hours)
Grafana 右上角选择了 Last 3 hours。
- 如果 windows_exporter 刚启动不久、Prometheus 也刚开始采集,可能落在时间范围之外。
- 你可以把 Grafana 时间范围先改成
Last 24 hours或Last 7 days测试。
你现在最需要提供的 2 个信息(我就能更快给你结论)
- 访问
http://192.168.1.10:9182/metrics的结果:能否看到windows_...指标?(截图/前几行也行) - Prometheus 的
Status -> Targets里 windows_exporter 那个目标是 UP 还是 DOWN?
把这两点发我,我可以直接告诉你是 采集没成功 还是 Grafana 查询/label 不匹配,并给你对应的修复方法。