Grafana: Loading dashboard even if "Alert validation error: Data source used by alert rule not found"

Grafana: Loading dashboard even if "Alert validation error: Data source used by alert rule not found"

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

我尝试使用例如

加载仪表板
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=”。

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

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

记录的 API 与 POST/api/dashboards/db 需要与导出的 [=37] 不同的 JSON 格式=] 来自 Grafana 的模型 UI.

您可以 POST 您的 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}

如@Matt所述

The documented API with a POST to /api/dashboards/db requires a different JSON format than the exported JSON model from the Grafana UI.

据我所知,@Matt 提出的解决方法非常合理,应该适用于通过 GUI 导出的 Json 文件。在我的例子中,我通过 GET 得到了 Json 文件到 /api/dashboards/uid/:uid (Get dashboard by uid) 在这种情况下,格式是正确的,但是,需要设置 [= dashboard 的 12=] 到 null 除非他正在编辑现有仪表板,在这种情况下 id 应该匹配。

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