如何便捷导出Grafana配置(如告警)以用于后续配置交付?
Grafana v8.2+ Web UI 配置批量导出方案
针对你需要导出UI中创建的配置、存入Git做自动化交付的需求,有以下几种可直接落地的操作方式:
方法1:通过Grafana HTTP API批量导出
所有UI中可配置的资源都有对应的HTTP接口可以拉取结构化数据,不需要手动拼接YAML:
- 导出数据源:调用
GET /api/datasources接口获取所有数据源配置,可通过简单脚本将返回的JSON转换为符合provisioning规范的YAML文件,直接放入数据源配置目录即可 - 导出面板:先调用
GET /api/search?query=&type=dash-db获取全量面板的UID,再逐个调用GET /api/dashboards/uid/{uid}拉取面板JSON,按面板提供程序要求的目录结构存放即可,注意保留uid字段保证后续配置更新时可匹配对应面板 - 导出统一告警配置:v8.2+版本支持调用
GET /api/v1/provisioning/alert-rules导出告警规则,通知策略、联系人点、静默规则等资源也可通过/api/v1/provisioning/下的对应接口拉取
方法2:通过官方grafana-cli工具直接导出
Grafana内置的CLI工具提供了开箱即用的导出能力,不需要额外对接API:
- 执行命令
grafana cli admin export即可批量导出所有配置,支持通过参数指定仅导出数据源、面板、告警等特定类型的资源,导出的内容默认符合provisioning的YAML格式规范,仅需少量调整即可直接使用 - 若你使用容器部署Grafana,可直接进入容器内部执行该命令,将导出目录挂载到宿主机后即可存入Git仓库
配置交付优化建议
导出的配置可按以下固定目录结构组织,直接存入Git即可实现版本管理和自动化交付:
grafana-provisioning/ ├── datasources/ # 数据源配置目录 │ └── all-datasources.yaml ├── dashboards/ # 面板配置目录 │ ├── provider.yaml # 面板提供程序声明文件 │ └── panels/ # 所有面板JSON存放目录 │ ├── biz-monitor.json │ └── infra-monitor.json └── alerting/ # 告警配置目录 └── all-alert-config.yaml
部署时将整个grafana-provisioning目录挂载到Grafana实例的/etc/grafana/provisioning路径,Grafana启动时会自动加载所有配置,无需再操作Web UI手动配置。
注意事项:
- 导出的配置中若包含数据源密码、告警通知webhook token等敏感信息,不要直接明文存入Git,可替换为
${ENV_VAR_NAME}格式的环境变量引用,Grafana provisioning原生支持自动读取对应环境变量填充- 单个手动导出面板时,记得勾选
Export for sharing externally选项,避免出现依赖本地临时数据源UID的问题- 告警配置导出后需检查关联的数据源UID、通知渠道UID是否和provisioning目录下的对应资源UID保持一致,避免启动加载失败
内容的提问来源于stack exchange,提问作者bove
相关产品推荐
相关产品推荐

