如何通过它的 API 更新 Grafana 仪表板



我想通过它的API更新grafana仪表板,但我发现了两个问题:

  1. 我收到一个412 HTTP错误{'message': 'A dashboard with the same name in the folder already exists', 'status': 'name-exists'}
  2. 当我更改仪表板的名称时,它会被移到常规文件夹中

我通过以下方式获得了用于更新仪表板的json:

  1. 通过API下载获取仪表板的当前状态
  2. 更改了一些变量(现在我刚刚更改了这些变量,试图将其保留在当前文件夹中(
response_json["meta"]["folderId"] = folder_id
response_json["meta"]["folderUid"] = folder_uid
response_json["meta"]["overwrite"] = True
response_json["dashboard"]["uid"] = dashboard_uid
response_json["dashboard"]["id"] = dashboard_id

我没有改变任何其他事情,所以我不知道为什么我的名字存在问题;如果它存在,我想更新它,而不是创建一个新的,所以它应该是仪表板存在的。

我已尝试更改仪表板的名称。

试试这个:

def get_dashboard_by_uid(uid: str):
# _headers contains Authorization with the bearer
endpoint = f'{_url}/dashboards/uid/{uid}'
return requests.get(endpoint, headers=_headers, verify=False).json()
def update_dashboard():
dashboard = get_dashboard_by_uid('<your-dashboard-uid>')
endpoint = f'<url>/dashboards/db'
headers = _headers
headers['Content-Type'] = 'application/json'
headers['Host'] = '<your-host>'
dashboard['dashboard']['title'] = 'Change from API update'
dashboard['folderId'] = <your-folder-id>
return requests.post(endpoint, data=json.dumps(dashboard), headers=headers, verify=False).json()

来自API文件:

您必须在JSON中提供多个字段,第一个字段是仪表板JSON模型,其余字段是文件夹、提交版本历史记录和覆盖属性的消息。

{"仪表板":{json_dashboard_model},"文件夹Id":0,"folderUid":"l3KqBxCMz";,"消息":"对xyz"进行了改变;,"覆盖":虚假的}

代码中有这一行:dashboard['folderId'] = <your-folder-id>您可以将对象添加到您想要的仪表板所在的文件夹中。

之前

代码运行后

最新更新