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 中会发生变化。确保所有元数据(例如 title
、uid
、overwrite
-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 的正确回答。
我正在尝试将仪表板添加到玩具 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 中会发生变化。确保所有元数据(例如 title
、uid
、overwrite
-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 的正确回答。