2

我正在尝试将仪表板添加到玩具 Grafana 本地安装中,以调试仪表板并了解如何在我们的服务器上设置 ci。

我尝试使用例如加载仪表板

curl --request POST \
  --url http://localhost:3000/api/dashboards/db \
  --header 'Authorization: Bearer <my key>' \
  --header 'Content-Type: application/json' \
  --data '{<the whole dashboard json code...>}'

但我收到“警报验证错误:未找到警报规则使用的数据源,alertName=Persistence Queues 警报,datasource=”。

这是有道理的,因为我没有本地化数据源,但是它阻止了我加载仪表板并在我的玩具服务器上玩它。如果我使用导入,即使出现错误,我也可以加载仪表板(但我的目标是测试 ci 的 http api)。

有没有一种方法/服务器配置设置允许我通过 http api 创建仪表板,即使没有有效的警报?

4

2 回答 2

1

带有POST的文档化 API/api/dashboards/db需要与从 Grafana UI 导出的 JSON 模型不同的 JSON 格式。

您可以将您的JSON发布到/api/dashboards/import,以便执行与 UI 在内部执行的相同查询。由于这没有正式记录,因此预计 API 会在 Grafana 的未来版本中发生变化。确保按照您的意愿设置所有元数据(例如titleuidoverwrite-flag 和)。folderId其中一些参数通常在导入时显示在 UI 中,并在对 API 进行查询之前被替换。

示例请求:

curl -X POST http://localhost:3000/api/dashboards/import \
     -H "Authorization: Bearer xyz" \
     -H "Content-Type: application/json" \
     -d '{"dashboard":{"annotations": ...,"title":"Test-Import","uid":"unique-id-abc",...},"overwrite":true,...,"folderId":0}'

示例响应:

{"pluginId":"","title":"Test-Import","imported":true,"importedUri":"db/test-import","importedUrl":"/d/unique-id-abc/test-import","slug":"test-import","dashboardId":15,"folderId":0,"importedRevision":1,"revision":1,"description":"","path":"","removed":false}
于 2021-07-07T13:21:17.580 回答
0

正如@Matt 所提到的

带有 POST 到 /api/dashboards/db 的文档化 API 需要与从 Grafana UI 导出的 JSON 模型不同的 JSON 格式。

据我所知,@Matt 提出的解决方法非常合理,应该适用于通过 GUI 导出的 Json 文件。在我的情况下,我将 Json 文件通过GET/api/dashboards/uid/:uid通过 uid 获取仪表板)在这种情况下,格式是正确的,但是,除非他正在编辑现有仪表板,否则需要将其设置为"id",在这种情况下应该匹配.dashboardnullid

所以这两种解决方案都是正确的,每个解决方案都取决于初始的 Json 文件。鉴于此,我将接受@Matt 的回答是正确的。

于 2021-08-06T22:51:09.753 回答