Grafana仪表盘预配置报错:JSON正确仍提示标题不能为空
问题概述
在Kubernetes环境中使用Helm部署Grafana仪表盘时遇到问题:仪表盘JSON文件格式正确且已正确挂载,但Grafana无法加载该仪表盘,提示“Dashboard title cannot be empty”(仪表盘标题不能为空)。
环境信息
- Kubernetes集群:K3S树莓派集群
- Grafana部署方式:Helm
- 命名空间:monitoring
问题详情
JSON文件格式正确且放置在指定目录,但Grafana无法识别该仪表盘JSON文件。
配置信息
grafana/templates/grafana-dashboards.yaml
apiVersion: v1 kind: ConfigMap metadata: name: grafana-dashboards namespace: monitoring labels: grafana_dashboard: "1" data: pi-cluster-health.json: |- {{ .Files.Get "dashboards/pi-cluster-health.json" | indent 4 }}
grafana/dashboards/pi-cluster-health.json(注:原标注文件名有误,实际为JSON文件)
{ "dashboard": { "id": null, "title": "Raspberry Pi Cluster Health", "panels": [ { "type": "graph", "title": "CPU Usage", "targets": [ { "expr": "100 - (avg by(instance) (rate(node_cpu_seconds_total{mode='idle'}[5m])) * 100)", "legendFormat": "{{`{{ instance }}`}}", "refId": "A" } ], "yaxes": [ { "format": "percent", "label": "CPU Usage", "min": 0, "max": 100 } ], "xaxis": { "show": true }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 0 } } ], "schemaVersion": 16, "version": 0, "refresh": "5s" } }
验证步骤
ConfigMap验证
已确认ConfigMap创建正常且包含JSON内容:
kubectl get configmap grafana-dashboards -n monitoring -o yaml
输出:
apiVersion: v1 data: pi-cluster-health.json: |- { "dashboard": { "id": null, "title": "Raspberry Pi Cluster Health", ... }
Pod内文件验证
已确认JSON文件正确挂载到Grafana Pod:
kubectl exec -it <grafana-pod> -n monitoring -- /bin/sh cat /var/lib/grafana/dashboards/pi-cluster-health.json
输出:
{ "dashboard": { "id": null, "title": "Raspberry Pi Cluster Health", ... }
Grafana日志
检查Grafana日志发现错误:
kubectl logs -l app=grafana -n monitoring
输出:
logger=provisioning.dashboard type=file name=default t=2024-07-11T02:33:51.503463709Z level=error msg="failed to load dashboard from " file=/var/lib/grafana/dashboards/pi-cluster-health.json error="Dashboard title cannot be empty"
观察结果
JSON文件格式、存放位置均正确,但Grafana日志仍提示“仪表盘标题不能为空”,而标题在JSON中已明确设置。
内容的提问来源于stack exchange,提问作者Rob R
相关产品推荐
相关产品推荐

