Grafana 通过 API 覆盖现有仪表板

Posted

技术标签:

【中文标题】Grafana 通过 API 覆盖现有仪表板【英文标题】:Grafana overwrite existing dashboard via API 【发布时间】:2020-09-13 11:18:57 【问题描述】:

我正在尝试通过 API 覆盖现有的 grafana 仪表板,如下所示:

curl -X POST -H "Content-Type: application/json" "https://api_key:xxx/api/dashboards/db" -d @test.json

我遇到了版本控制问题,无法用我的 json 覆盖同一个仪表板:

"message":"The dashboard has been changed by someone else","status":"version-mismatch"⏎

有没有办法避免这种情况并强制覆盖?

谢谢!

【问题讨论】:

【参考方案1】:

这实际上取决于您的 test.json 文件中的内容。我期望正确的仪表板模型,因此您只需在顶层添加一些字段,例如:

"overwrite": true,
"message": "my saved message, which will be available in the version history"

请参阅 API 文档 - https://grafana.com/docs/grafana/latest/http_api/dashboard/#create-update-dashboard

【讨论】:

该死的..我在元部分放置“覆盖”:true,而不是在顶层......有没有办法将这条线自动放在json模型中?我是在导出后手动放置的,这不是很方便... @user2462699 我使用 python,它是小菜一碟。你可以试试 jq./sed/... @JanGaraj 你能为此分享任何 python 代码 sn-p/example 吗?如果它使用grafanlib,那就太好了。【参考方案2】:

一次或多次递增版本字段。

 "uid": "hDfaY-fGk",
  "version": 20            <-this one. Make it 21, 22, 23

【讨论】:

正确答案。

以上是关于Grafana 通过 API 覆盖现有仪表板的主要内容,如果未能解决你的问题,请参考以下文章

“消息”:使用 HTTP API 导入 grafana 现有 json 文件时出现“无法导入仪表板”错误

无法通过 Grafana API 导入 grafana 仪表板

通过 API 创建的 Grafana 仪表板未显示在 Grafana UI 中

使用 Grafana 从通过 API 提取的数据创建实时仪表板,无需数据库

是否可以在 grafana 中复制仪表板?

如何通过 REST API 更新 Grafana 面板中的指标值