我正在尝试使用grafana的api从模板创建grafana仪表板 . 我现在使用grafana v2.0.2 .
我有一个api密钥,我可以使用curl获得仪表板,但我无法创建仪表板 .
当我执行以下请求时: curl -i -H "Authorization: Bearer eyJrIobfuscatedlkIjoxfQ==" http://localhost:3000/api/dashboards/db/webserver2
然后我将json返回到dasboard .
当我尝试创建我在api示例中找到的最简单的仪表板时,它不起作用: curl -i -H "Authorization: Bearer eyJrIobfuscatedlkIjoxfQ==" -d /tmp/simpledash http://localhost:3000/api/dashboards/db
其中 /tmp/simpledash
包含:
{
"dashboard": {
"id": null,
"title": "Production Overview",
"tags": [ "templated" ],
"timezone": "browser",
"rows": [
{
}
]
"schemaVersion": 6,
"version": 0
},
"overwrite": false
}
我收到以下回复:
HTTP/1.1 422 status code 422
Content-Type: application/json; charset=utf-8
Date: Wed, 01 Jul 2015 16:16:48 GMT
Content-Length: 84
[{"fieldNames": ["Dashboard"],"classification":"RequiredError","message":"Required"}]
我尝试了json的一些变体,但我总是得到那个响应,在互联网上我找不到一个有效的例子 . 有人为我做过一个有效的例子吗?我喜欢这个工作,所以我可以从ansible创建仪表板 .
谢谢!
6 回答
它失败的原因是API需要知道有效载荷是json .
与cURL
与ansible
和包含仪表板的vars文件,
昨晚我想出来了,网站上的例子在“schemaVersion”之前缺少一个逗号
正确的json应该是:
如果你将json复制到这个json验证器中,它会告诉你问题的确切位置:
http://jsonlint.com/
要使用curl从文件发布数据,请在文件名前加一个@,如下所示:
我解决了这个问题:
1-首先像这样创建你的数据源(在我的例子中,我使用了collectd,prometheus和grafana的组合)
2 - 要添加自定义的json仪表板,请编辑grafana.ini文件并启用Dashboard json文件部分,如下所示:
3-然后将仪表板json文件复制到/ var / lib / grafana / dashboards(需要重启服务)
用户ONE-LINER可从您的计算机导入JSON仪表板
请从上面的命令更改GRAFANA_USERNAME,GRAFANA_PASSWORD和GRAFANA_HOST .
我正在添加一个使用python脚本的方法