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

时间:2019-04-06 17:51:29

标签: grafana grafana-api

我认为我做错了,因为每次我从后端运行api脚本时,都会显示“成功”,但是当我进入grafana UI时,找不到我刚刚创建的仪表板。

这是完整的脚本:

#!/usr/bin/env python

import requests,sys,json

url = "http://admin:admin@10.10.10.10:3000/api/dashboards/home"
headers = {
    'Authorization': 'Bearer eyJrIjoiazJblahblahMiLCJuIjoiYXBpa2V5Y3VybCIsImlkIjoyf',
    'Content-Type': 'application/json',
}
creategrdb = '''{
    "dashboard": {
        "id": null,
        "title": "API Test Dashboard 3",
        "originalTitle": "API Test Dashboard 3",
        "timezone": "browser",
        "rows": [
            {
                "collapse": false,
                "editable": true,
                "height": "250px",
                "panels": [],
                "title": "Row"
            }
        ],
        "schemaVersion": 6,
        "version": 0
    }
}'''
response = requests.post('http://10.10.10.10:3000/api/dashboards/db', headers=headers, data=creategrdb, verify=True)
print (response.text)

运行该脚本时,我得到了:

{"id":17,"slug":"api-test-dashboard-3","status":"success","uid":"wtKFBr6ik","url":"/d/wtKFBr6ik/api-test-dashboard-3","version":1}

这表示成功。

但是当我进入grafana UI确认创建了仪表板时,什么也没看到。

当我再次运行脚本时,它会因以下原因而中止:

{"message":"A dashboard with the same name in the folder already exists","status":"name-exists"}

表明仪表盘是在某个地方创建的,但是那个“某个地方”的出现似乎是个谜。

以“ admin”身份登录UI的用户是“超级管理员”,具有所有超级用户特权。所以我怀疑这是权限问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

更新(现在已解决)

请确保将各个仪表板定义中的“ org_id”设置为“ 1”。 而已。那为我解决了。

更新 我可以“解决”问题:

就我而言,在数据库的表 dashboard 中,我可以看到在UI中不可见的仪表板。我浏览了各列以发现任何差异,然后发现这些列

  • created_by
  • updated_by
  • org_id

设置为 -1 ,其中“常规”仪表板具有正值。 将这些值设置为 1 可以为我解决问题。 步骤:

  1. 停止grafana服务器
  2. 手动访问数据库(位于Linux下的/ var / lib / grafana /)
  3. 打开具有根特权的数据库客户端
  4. 编辑上述单元格并将更改写入数据库
  5. 退出客户端并重新启动grafana

希望这将解决所有阅读此书的人! 这种方法的问题:您可以重新启用已经存在的仪表板,但是我只找到了一种手动完成此操作的方法。我将看看是否可以首先阻止将这些列设置为-1,并在我取得任何进展时将其保持在最新状态。

原始答案

对此有任何更新吗?我得到完全相同的行为。 我可以在数据库中找到新的仪表板,并且还可以验证它是否已注册,因为我可以从成功响应中复制uid并对其执行GET-这将返回原本应该是但不可见的仪表板。 因此它绝对是“那里”,但它不会显示在UI中,并且我无法通过从其uid派生的url加载它。

尽管通过端点添加数据源还是可以的

答案 1 :(得分:0)

我遇到了一个变种: folder_id设置为 -1 ,导致同样的问题。 该URL可访问(从我导入新仪表板的会话中复制),但该仪表板未在新会话中列出。将此ID更改为1(常规文件夹)可解决此问题,尽管我不知道为什么会发生。这是我第一次遇到这个问题。 enter image description here