保存dashboard 为json 文件
我们可以把自己编辑或者修改后的dashboard保存为json文件,在其他环境导入使用,省得重新编辑或修改。导出方法如下:
![](https://img-blog.csdnimg.cn/img_convert/ad48879a8dc34f42a72f385c490dbcc7.png)
![](https://img-blog.csdnimg.cn/img_convert/1c8e492c28af4165af4f573429988175.png)
导入保存的json格式的dashboard到其他grafana
#可以通过三种方式导入dashboard,1)输入dashboard id(需要dashboard所在服务器可以联网);2)直接复制json格式内容;3)直接导入json格式文件
![](https://img-blog.csdnimg.cn/img_convert/98c4685f08f84c378278d6cf8b5d400d.png)
![](https://img-blog.csdnimg.cn/img_convert/9f97749cb6f24c64b4e188049fe57f1a.png)
保存dashboard后,导入到其他grafana使用后不显示数据
打开该dashboard 后报 Failed to upgrade legacy queries Datasource xxxxxxx was not found,无法显示监控数据
![](https://img-blog.csdnimg.cn/img_convert/38386ab0f46b4f4eae44088cdb0edb2f.png)
问题原因
这是因为从其他grafana 导出的dashboard 是写死数据源的,比如上面例子中导出的json文件写死的数据源为 "datasource": "br-prometheus",如果你当前要显示的监控数据的数据源名称跟这个不同,那么就会报报上面的错误,无法正常显示数据。
![](/qrcode.jpg)
解决方案
5.1 解决方案1:添加一个输入参数
1)在你的json文档开头添加如下部分
"__inputs": [
{
"name": "DS_PROMETHEUS",
"label": "prometheus",
"description": "",
"type": "datasource",
"pluginId": "prometheus",
"pluginName": "Prometheus"
}
],
https://grafana.com/grafana/dashboards 官方下载的dashboard json中都是包含这部分的。
2) 修改文本中所有 "datasource": 值为${DS_PROMETHEUS} 变量
#修改前
"datasource": "br-prometheus"
#修改后
"datasource": "${DS_PROMETHEUS}",
##注意第一个datasource 显示为 "datasource": "-- Grafana --",这个不需要修改为变量,可以把修改前写死的br-prometheus 全部替换成 ${DS_PROMETHEUS}
把修改后的json复制导入新的grafana,这时会让你选择数据源(未修改的json文本导入时没有数据源选项),这时选择正确的数据源,导入bashboard即可
![](https://img-blog.csdnimg.cn/img_convert/e06bd428d31b4fd2bd904fe2baf8fbb6.png)
![](https://img-blog.csdnimg.cn/img_convert/b532cdf8cc584868a7874c766a92d077.png)
导入后,该grafana数据正常显示
5.2 解决方案2:直接修改json文本中"datasource": 为正确值
#注意第一个datasource 为"datasource": "-- Grafana --",不要修改,可以替换json文件中老的数据源值为新的
![](https://img-blog.csdnimg.cn/img_convert/9b0903c2d0784bd78523cb9143dabfdb.png)
5.3 解决方案3:给dashboard 添加一个变量(Variables)
#方案1和方案2,该dashboard 只能显示来自某个固定数据源的数据,方案3,可以让dashboard展示所有指定类型的数据源的数据
# 找到 templating.list, 添加一个变量,这里的变量名为 DS_PROMETHEUS,值为 prometheus
"templating": {
"list": [
{
"datasource": "Prometheus",
"description": null,
"error": null,
"hide": 0,
"includeAll": false,
"label": "datasource",
"multi": false,
"name": "DS_PROMETHEUS",
"options": [],
"query": "prometheus",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"type": "datasource"
},
...
# 所有的这些
"datasource": "br-prometheus",
# 修改为
"datasource": "${DS_PROMETHEUS}",
}
![](https://img-blog.csdnimg.cn/img_convert/6bb445a4436a4f8d9da54d121f2ca09b.png)