Grafana导入 json 文件的 dashboard 错误 Templating Failed to upgrade legacy queries Datasource xxx not found

  1. 保存dashboard 为json 文件

我们可以把自己编辑或者修改后的dashboard保存为json文件,在其他环境导入使用,省得重新编辑或修改。导出方法如下:

  1. 导入保存的json格式的dashboard到其他grafana

#可以通过三种方式导入dashboard,1)输入dashboard id(需要dashboard所在服务器可以联网);2)直接复制json格式内容;3)直接导入json格式文件

  1. 保存dashboard后,导入到其他grafana使用后不显示数据

打开该dashboard 后报 Failed to upgrade legacy queries Datasource xxxxxxx was not found,无法显示监控数据

  1. 问题原因

这是因为从其他grafana 导出的dashboard 是写死数据源的,比如上面例子中导出的json文件写死的数据源为 "datasource": "br-prometheus",如果你当前要显示的监控数据的数据源名称跟这个不同,那么就会报报上面的错误,无法正常显示数据。

扫描二维码关注公众号,回复: 14603576 查看本文章
  1. 解决方案

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}
  1. 把修改后的json复制导入新的grafana,这时会让你选择数据源(未修改的json文本导入时没有数据源选项),这时选择正确的数据源,导入bashboard即可

导入后,该grafana数据正常显示

5.2 解决方案2:直接修改json文本中"datasource": 为正确值

#注意第一个datasource 为"datasource": "-- Grafana --",不要修改,可以替换json文件中老的数据源值为新的

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}",
}

猜你喜欢

转载自blog.csdn.net/shaochenshuo/article/details/128735528