“No data”提示不表示数据源必然断连,需依次排查:一、测试数据源连接;二、直查后端验证指标是否存在;三、核对查询语句与标签一致性;四、检查时间范围与写入时效;五、审查变量展开后的实际查询。

如果您在Grafana面板中看到“No data”提示,并不必然意味着数据源连接已中断。该状态可能由数据链路中任一环节异常引发,包括数据未被采集、标签不匹配、查询语句错误或时间范围设置不当等。以下是排查此问题的步骤:
一、验证数据源连接状态
连接状态是基础前提,但“连接成功”不等于“数据可用”。需确认Grafana是否能与后端服务建立通信并获取响应。
1、登录Grafana管理界面,进入 Configuration → Data Sources。
2、找到对应的数据源条目,点击右侧 Test 按钮。
3、观察返回结果:Data source is working 表示网络与认证层面连通;若显示 Unable to connect 或超时,则需检查URL、端口、TLS设置及防火墙策略。
二、确认指标是否真实存在于数据源后端
即使Grafana连接测试通过,若后端(如Prometheus、InfluxDB)中无对应指标数据,仍会显示“No data”。必须绕过Grafana直接验证原始存储。
1、对于Prometheus数据源:在浏览器中访问 http://PROMETHEUS_URL:9090/api/v1/query?query=YOUR_METRIC_NAME,例如 http://localhost:9090/api/v1/query?query=mysql_up。
2、对于InfluxDB数据源:执行命令 curl -G 'http://localhost:8086/query' --data-urlencode 'q=SELECT count(*) FROM "jmeter"' --data-urlencode 'db=jmeter'。
3、若返回空结果或“no data”,说明指标未写入或已被清理,问题根源在采集端(如exporter、backend listener)或存储保留策略。
三、检查查询语句与指标标签的一致性
Grafana面板依赖精确的PromQL、SQL或Flux查询语句,任何字段名拼写错误、label键值不匹配或正则表达式误用,都会导致查询结果为空。
1、打开面板编辑模式,定位到 Query 选项卡。
2、比对查询中使用的指标名(如 mysql_info_schema_table_rows)是否与实际暴露的指标完全一致,注意大小写与下划线。
3、检查所有label过滤条件,例如 {job="mysqld", instance="10.0.0.51:9104"} 中的值是否与 /metrics 接口返回的label完全相同,包括引号、空格与特殊字符。
四、核对时间范围与数据写入时效性
Grafana默认使用相对时间范围(如“Last 6 hours”),若数据写入延迟、抓取间隔过长或时间偏移未对齐,将导致当前视图内无数据点。
1、在面板右上角点击时间选择器,切换为 Now 或手动设置一个较宽的时间跨度(如“Last 7 days”)。
2、查看数据源配置中的 Scrape interval(Prometheus)或 Refresh interval(InfluxDB),确认其是否大于面板刷新频率。
3、在Prometheus UI中执行 time() 函数,对比服务器时间与本地浏览器时间偏差是否超过抓取间隔的两倍。
五、审查变量与模板化查询的展开结果
使用变量(如 $job、$instance)的面板,其最终执行的查询语句取决于变量当前取值。若变量无有效选项或默认值为空,查询将无法命中任何时间序列。
1、进入面板编辑页,在 Variables 设置中检查每个变量的查询语句是否返回非空结果集。
2、点击面板右上角 Inspect → Query inspector,查看实际发送至数据源的完整查询字符串。
3、复制该字符串,在数据源原生UI(如Prometheus Expression Browser)中单独执行,验证是否返回数据点。
















