通过 API 创建的 Grafana 仪表板未显示在 Grafana UI 中
Posted
技术标签:
【中文标题】通过 API 创建的 Grafana 仪表板未显示在 Grafana UI 中【英文标题】:Grafana dashboards created through API not showing up in Grafana UI 【发布时间】:2019-08-28 07:54:39 【问题描述】:我认为我做错了什么,因为每次我从后端运行我的 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 的用户是“管理员”,拥有所有超级用户权限。所以我怀疑它的权限问题。
有什么想法吗?
【问题讨论】:
在db的dashboard表中创建了吗?还将日志记录设置为调试,看看会产生什么。 【参考方案1】:我遇到了一个变种:
folder_id
设置为 -1,导致同样的问题。
该 url 是可访问的(从我导入新仪表板的会话中复制),但仪表板未在新会话中列出。将此 id 更改为 1(通用文件夹)解决了这个问题,尽管我不知道它为什么会发生。这是我第一次遇到这个问题。
【讨论】:
【参考方案2】:更新(现在更好地解决了)
确保在您的个人仪表板定义中将“org_id”设置为“1”。 而已。这为我解决了。
更新 我可以“解决”这个问题:
在我的例子中,在数据库中的 dashboard 表中,我可以看到在 UI 中不可见的仪表板。我浏览了这些列以发现任何差异,我注意到这些列
created_by updated_by org_id设置为 -1,其中“正常”仪表板具有正值。 将这些值设置为 1 为我解决了这个问题。 步骤:
-
停止 grafana 服务器
手动访问数据库(linux下位于/var/lib/grafana/)
使用 root 权限打开数据库客户端
编辑上述单元格并将更改写入数据库
退出客户端并重启grafana
希望任何阅读本文的人都能解决这个问题! 这种方法的问题:您重新启用已经存在的仪表板,但我只找到了一种手动执行此操作的方法。我会看看我是否可以首先阻止这些 cols 被设置为 -1 并在我取得任何进展时在此处保持最新状态。
原答案
这方面有什么更新吗?我得到完全相同的行为。 我在数据库中找到了新的仪表板,并且还能够验证它是否已注册,因为我可以从成功响应中复制 uid 并对其执行 GET 操作——这会返回那个所谓的但不可见的仪表板。 所以它肯定是“那里”,但它没有显示在 UI 中,我无法通过从其 uid 派生的 url 加载它。
通过端点添加数据源工作正常
【讨论】:
以上是关于通过 API 创建的 Grafana 仪表板未显示在 Grafana UI 中的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 REST API 更新 Grafana 面板中的指标值