Grafana API 脚本创建新数据源失败

Posted

技术标签:

【中文标题】Grafana API 脚本创建新数据源失败【英文标题】:Grafana API script to create new datasource failing 【发布时间】:2021-09-21 18:48:57 【问题描述】:

我正在学习 Grafana,以及如何在 Powershell 中与 API 交互。我能够使用 Grafana HTTP API 创建仪表板,但是我无法获得相同的 API 来创建数据源。我的代码如下:

$header = @"Authorization" = "Bearer apikey="
$createDatasourceUri = "http://localhost:3000/api/datasources"
$createDatasourcejson = @'

    "datasource": 
        "name": "prometheusApiTest",
        "type": "prometheus",
        "url": "http://localhost:9090",
        "access": "proxy",
        "basicAuth": false,
        "isDefault": true
    

'@

$datasourceParameters = @
    Method = "POST"
    URI = $createDatasourceUri
    Body = $createDatasourcejson
    Headers = $header
    ContentType = "application/json"


Invoke-RestMethod @datasourceParameters 

我收到以下错误:

Invoke-RestMethod : ["fieldNames":["Name"],"classification":"RequiredError","message":"Required","fieldNames":["Type"],"classification":"RequiredError","message":"Required","fieldNames":["Access"],"classificat
ion":"RequiredError","message":"Required"]

我不知道发生了什么。我能找到的有关此错误的任何信息都表明我需要将 ContentType 指定为“application/json”,但我已经非常清楚地这样做了。当我在该 API 端点上执行“GET”时,我确实收到了数据,即使复制返回的数据仍然会导致上述错误。我完全不知所措,因为同样的代码用于创建仪表板(尽管仪表板具有正确的 json 有效负载)。有什么想法吗?

【问题讨论】:

【参考方案1】:

The Grafana docs for the Datasource API 在响应中只有datasource 元素,而不是初始调用。不需要我的代码的第 5 行以及该元素的后续 ,并且删除了这些行的脚本函数。

【讨论】:

以上是关于Grafana API 脚本创建新数据源失败的主要内容,如果未能解决你的问题,请参考以下文章

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

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

4. Grafana使用mysql作为数据源,呈现图表

grafana使用小节

将 Grafana 连接到 MySQL 显示查询失败,为啥?

通过 HTTP API 在 Grafana 中创建图表