0

我认为我做错了什么,因为每次我从后端运行我的 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"}

指示仪表板是在某处创建的,但“某处”在哪里,似乎是个谜。

登录 UI 的用户是拥有所有超级用户权限的“管理员”。所以我怀疑它的权限问题。

有任何想法吗?

4

2 回答 2

3

更新(现在更好地解决了)

确保在您的个人仪表板定义中将“org_id”设置为“1”。而已。这为我解决了它。

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

在我的例子中,在数据库的表仪表板中,我可以看到 UI 中不可见的仪表板。我浏览了这些列以发现任何差异,我注意到这些列

  • 由...制作
  • 更新人
  • org_id

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

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

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

原始答案

对此有何更新?我得到完全相同的行为。我在数据库中找到了新的仪表板,并且还能够验证它是否已注册,因为我可以从成功响应中复制 uid 并对其执行 GET 操作——这会返回那个所谓的但不可见的仪表板。所以它肯定是“那里”,但它没有出现在 UI 中,我无法通过从其 uid 派生的 url 加载它。

通过端点添加数据源工作正常

于 2019-10-18T10:28:55.643 回答
2

我遇到了一个变体:folder_id被设置为-1,导致同样的问题。该 url 是可访问的(从我导入新仪表板的会话中复制),但仪表板未在新会话中列出。将此 id 更改为 1(通用文件夹)解决了这个问题,尽管我不知道它为什么会发生。这是我第一次遇到这个问题。 在此处输入图像描述

于 2020-04-29T19:46:00.443 回答