我司最近的一件大事是AWS迁移阿里云,因此之前部署在AWS上的Prometheus监控系统需要迁移到Aliyun机器上,组件之一展示面板Grafana有很多自定义好的配置,而这些配置是存在于grafana.db中的,因此需要导出导入配置到新的db中。Grafana提供了丰富的api供用户使用,我们调用api导出
导出配置
首先获取Grafana的api_key:menu–configuration–api keys – add API key
然后安装jq:命令行下处理JSON 数据的工具,可以对json数据进行分片、过滤、映射和转换
导出脚本grafana-dashboard-exporter.sh参考:https://gist.github.com/crisidev/bd52bdcc7f029be2f295
使用方式(已脱敏):
导入配置
- 老版本:使用api_key导入
- 新版本(v5.0之后):使用dockprom的setup.sh启动时导入
使用api导入
如果在目标机器上的Grafana已经启动并且可以访问Dashboard拿到api_key,则可以按照以下方式导入配置
导入脚本grafana-dashboard-importer.sh参考:https://gist.github.com/thedoc31/628beeee934f9c84648c108d4ad89f05
使用方式:
使用grafana provision
新版Grafana支持使用provision的方式通过yaml配置导入 dashboards | datasources | notifiers
这三种资源到Grafana db中。
/etc/grafana/grafana.ini
文件中需要配置provisioning的目录
/etc/grafana/provisioning
目录中新建dashboards | datasources | notifiers
这三个文件夹。
在dashboards目录下provisioning/dashboards/dashboard-provider.yaml
需要配置好需要导入的dashboard的配置文件的path:
在datasources目录provisioning/datasources/datasource.yaml
下需要配置好需要导入的datasources的配置文件的path:
notifiers配置暂时没有用到,保留一个空目录即可
注意事项:
/var/lib/grafana/dashboards/General
目录grafana默认的目录,因此export之后的General需要导入到default中- 通过export导出的json配置文件需要做处理:
- 只需要json中的dashboard信息,不需要meta信息
- json配置需要保持字典序
grafana-dashboard-exporter.sh导出的代码可以通过一下python代码进行转换得到provision的配置:
参考: