Grafana:如何修复或隐藏DashboardQueryRunner Failed等UI错误通知
Kubernetes集群中Grafana随机弹出DashboardQueryRunner Failed错误的排查与解决
问题背景
在Ubuntu服务器的Kubernetes集群上部署了Grafana 10.0.2(此前版本也存在该问题),通过Prometheus监控Kubernetes资源。仪表盘核心功能正常,但切换或刷新时会随机弹出红色错误框,提示DashboardQueryRunner Failed、Load Failed等信息。
可能的原因
- 查询上下文被取消:切换/刷新仪表盘时,未完成的查询会被Grafana主动终止,触发
context canceled错误,进而被标记为失败通知。这是Grafana的默认行为,但部分场景下会误触发提示。 - Prometheus查询性能不足:当仪表盘包含大量并发查询,或查询语句过于复杂、时间范围过大时,Prometheus响应超时,导致查询失败。
- 网络或连通性问题:Kubernetes集群内Grafana与Prometheus之间存在偶尔的网络延迟、中断,或DNS解析、网络策略限制导致请求失败。
- Grafana配置不合理:查询超时时间过短、并发查询限制过低,导致正常查询被中断并触发错误提示。
修复方案
1. 优化Prometheus查询
- 简化复杂查询,减少不必要的标签过滤或聚合操作;
- 为查询设置合理的时间范围,避免一次性拉取过大的数据量;
- 配置Prometheus记录规则(Recording Rules),将频繁使用的聚合查询提前计算并存储,降低实时查询压力。
2. 调整Grafana查询超时配置
- 修改
grafana.ini中的全局查询超时:[queries] query_timeout = 30s # 根据实际情况延长,默认可能为10s或15s - 在Prometheus数据源配置页面,单独调整该数据源的查询超时时间(进入数据源→设置→超时)。
3. 优化Prometheus性能
- 扩容Prometheus实例的CPU、内存资源,或启用Thanos/Mimir等远程存储方案,分担存储与查询负载;
- 调整Prometheus的数据保留周期,清理过期数据,减少存储压力。
4. 调整Grafana并发查询限制
- 在
grafana.ini中修改并发查询参数:[dashboard] max_concurrent_shard_queries = 20 # 根据集群资源调整,避免并发过高导致请求中断
5. 排查集群网络问题
- 检查Grafana Pod与Prometheus Service的连通性,执行
kubectl exec -it <grafana-pod-name> -- curl <prometheus-service-url>验证; - 查看Grafana和Prometheus的Pod日志,确认是否存在网络相关错误(如
connection refused、timeout)。
禁用错误通知的临时方案
若上述修复无效,可临时禁用这类红色通知(注意:会掩盖真实问题,需谨慎使用):
1. 通过配置文件全局禁用
修改grafana.ini:
[notifications] disable_failed_queries_notifications = true
重启Grafana Pod生效。
2. 仪表盘级关闭通知
进入目标仪表盘→设置→通知,关闭“查询失败时显示通知”选项。
3. 自定义CSS隐藏错误框
- 进入Grafana后台→Admin→设置→外观,开启“自定义CSS”;
- 添加以下代码:
div.alert-error { display: none !important; }
内容的提问来源于stack exchange,提问作者Manu Gupta
相关产品推荐
相关产品推荐

