首页/云/可观测性速查/用 HTTP API 管理看板
Grafana 与看板53 条

用 HTTP API 管理看板

看板可通过 API 读写:GET /api/dashboards/uid/<uid> 导出,POST /api/dashboards/db 创建或覆盖;配合服务账号令牌可进 CI 流水线。

可观测性速查云更新于 2026-10-13

看板 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 密钥:个人离开团队或改密后脚本会突然失效,服务账号的权限与生命周期可控,也能按最小权限授予编辑范围。
导入前后都做一次导出比对,是成本很低的验证手段:面板数量、数据源引用与变量定义是否与预期一致,一眼就能看出。

易错点

  • 不带 uid 的 POST 会新建随机 uid,重复推送会堆出一批同名看板,脚本里必须先读 uid 再写入
  • folderUid 填错会报错或落到默认文件夹,写入前先用文件夹接口查准确 uid
  • 直接改看板 JSON 却不改 version 字段时,并发写入会互相覆盖,流水线里应有单点写入约束
  • 把令牌明文写在脚本或仓库里等于公开 Grafana 访问权限,应通过环境变量或密钥管理注入

数据来源与参考

  • Grafana 官方文档 · Dashboard HTTP API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌