You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程方式复制Grafana仪表板布局至另一仪表板?

解决Grafana仪表板复制时API 400错误的问题

你的操作存在几个核心问题,导致请求返回400错误:

1. 请求端点与方法错误

更新现有仪表板应使用PUT请求指向/api/dashboards/uid/{second_dashboard_uid},而非创建仪表板时的POST端点。POST用于新建资源,PUT才是针对已有UID的仪表板执行更新操作。

2. 仪表板字段处理不当

从GET接口获取的第一个仪表板JSON中,dashboard节点包含原有的id和uid,直接替换会引发冲突:

  • 需清空复制过来的dashboard.id(设为空字符串),Grafana会自动维护现有仪表板的ID
  • 要将复制后的dashboard.uid设置为第二个仪表板的UID
  • 更新时必须将overwrite设为True,否则Grafana会拒绝覆盖现有内容

3. 请求体结构错误

你修改的second_dashboard_json是GET返回的完整结构(包含meta等冗余字段),但更新API仅接受与创建时一致的精简结构,外层仅保留dashboard、folderUid、message、overwrite字段。

正确操作代码示例

# 1. 获取第一个仪表板的完整JSON(含GUI修改内容)
r_first = s.get(api_get_dashboard_by_uid + first_dashboard_uid)
first_dashboard_json = r_first.json()

# 2. 提取并处理第一个仪表板的dashboard节点
copied_dashboard = first_dashboard_json['dashboard'].copy()
copied_dashboard['id'] = ""  # 清空原有ID避免冲突
copied_dashboard['uid'] = second_dashboard_uid  # 设置为目标仪表板UID
copied_dashboard['title'] = "this is a copy of first dashboard"  # 修改标题区分副本

# 3. 构造更新请求体
update_payload = {
    "dashboard": copied_dashboard,
    "folderUid": "",  # 保持原文件夹或按需修改
    "message": "Copied from first dashboard",
    "overwrite": True  # 必须设为True才能覆盖现有仪表板
}

# 4. 发送PUT请求更新
update_url = f"{api_base_url}/api/dashboards/uid/{second_dashboard_uid}"
r_update = s.put(update_url, data=json.dumps(update_payload))
print(r_update.status_code)
print(r_update.json())

额外优化:直接创建副本(无需提前建空仪表板)

# 直接基于第一个仪表板创建副本,省去空仪表板创建步骤
new_dashboard_payload = {
    "dashboard": {
        **first_dashboard_json['dashboard'],
        "id": "",
        "uid": "",  # 留空让Grafana自动生成,或指定新UID
        "title": "this is a copy of first dashboard"
    },
    "folderUid": "",
    "message": "Create copy of first dashboard",
    "overwrite": False
}

r_create_copy = s.post(api_create_dashboard, data=json.dumps(new_dashboard_payload))

内容的提问来源于stack exchange,提问作者Vincent Tep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 18:05:32