看板 API 是什么
Grafana 的看板可以通过 HTTP API 读写,把看板管理从界面操作变成可脚本化的动作:GET /api/dashboards/uid/UID 按稳定标识导出看板,POST /api/dashboards/db 创建或覆盖导入,配合服务账号令牌就能进流水线。相比界面手工导入导出,API 方式的好处是结果可复现、可审计——导出的 JSON 进版本库,改动留痕,环境之间可以互相搬运。
基本信息
| 认证方式 | 服务账号令牌(Authorization: Bearer) |
|---|---|
| 导出接口 | GET /api/dashboards/uid/UID,返回体里 dashboard 字段是去壳的看板 JSON |
| 写入接口 | POST /api/dashboards/db,可带 folderUid 与 overwrite |
| 搜索接口 | GET /api/search?query=关键字,用于找 uid |
典型使用场景
- 版本化管理:定期导出看板 JSON 提交到仓库,记录结构变化
- 环境搬运:把生产看板搬到预发环境做验证
- 批量创建:新增业务线时按模板批量生成看板
- CI 校验:流水线里校验看板 JSON 是否合法、引用是否完整
- 变更回滚:保存变更前的 JSON,出问题直接覆盖回去
导出与写入
导出与写入
TOKEN=<服务账号令牌>
# 导出:取 dashboard 字段并去掉外层包装
curl -s -H "Authorization: Bearer $TOKEN" \
http://localhost:3000/api/dashboards/uid/app-overview | jq .dashboard > app.json
# 覆盖导入:overwrite 为 true 时按 uid 更新已有看板
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
http://localhost:3000/api/dashboards/db \
-d "{\"dashboard\": $(cat app.json), \"folderUid\": \"ops\", \"overwrite\": true}"
# 确认落库结果
curl -s -H "Authorization: Bearer $TOKEN" http://localhost:3000/api/dashboards/uid/app-overview | jq .meta接口与用途
| 接口 | 作用 | 注意 |
|---|---|---|
| /api/search | 按关键字搜索看板与文件夹 | 返回体中的 uid 是后续操作的稳定标识 |
| /api/dashboards/uid/… | 按 uid 读取看板 | 导出时用 dashboard 字段而不是整个响应 |
| /api/dashboards/db | 创建或更新看板 | 不带 uid 会新建随机 uid |
| /api/folders | 列出文件夹与 uid | 写入前先查准确的 folderUid |
| /api/dashboards/db(DELETE) | 按 uid 删除看板 | 删除不可恢复,先导出备份 |
用服务账号令牌而不是个人 API 密钥:个人离开团队或改密后脚本会突然失效,服务账号的权限与生命周期可控,也能按最小权限授予编辑范围。
导入前后都做一次导出比对,是成本很低的验证手段:面板数量、数据源引用与变量定义是否与预期一致,一眼就能看出。