使用 Python 在 Grafana 中创建或更新面板

create or update a panel in Grafana using Python

我有一个名为“server-plots”的仪表板,还有另一个名为“master-plots”的仪表板。 “master-plots”下的面板是最新的图表,我想将“master-plots”仪表板内的新面板也添加到“server-plots”,所有带有 Python 代码(不是手动或使用 curl) . 我能够使用 Grafana GET APIs 以编程方式备份​​这些图,如 JSON。我想在“master-plots”仪表板 JSON 中找到新面板,并将它们添加到“server-plots”仪表板中,全部使用 Python。我无法找到任何 API 来做到这一点。知道我怎样才能做到这一点吗?

我实现这一点的方法是将 master-plots 备份为 JSON 使用:

/api/dashboards/uid/<uid of the dashboard>

然后将其与 server-plots 中的比较(采取类似方式),然后用差异更新 server-plots JSON(基本上替换 server-plots JSON 与 master-plots JSON),最后使用 POST 方法将其写入以下内容:

/api/dashboards/db/

这里要考虑一件事:写入 server-plots 的新 JSON 应该有不同的 uidoverwrite=True:

--snip--
f = open(myjsonfile,)  # the updated JSON of server-plots
data = json.load(f)
data["dashboard"]["id"] = None
data["overwrite"] = True
data["folderId"] = 123 # this is the folder ID of the server-plots
data["dashboard"]["uid"] = <logic to generate randum alpha-num>
url = "https://mygrafanaurl.com/api/dashboards/db"
headers = {'Authorization': 'auth',   'Content-Type': 'application/json' }
response = requests.request("POST", url, headers=headers, data=json.dumps(data))