如何使用Python Requests删除Grafana仪表盘中的面板?
如何通过Grafana API删除仪表盘中的面板
Grafana没有提供直接删除单个面板的API端点,你需要通过更新整个仪表盘配置的方式来移除目标面板,具体步骤如下:
步骤1:获取目标仪表盘的完整配置
先用你已有的GET请求获取仪表盘的全部JSON数据,包含所有面板信息:
import requests server = "你的Grafana实例地址" uid = "目标仪表盘的UID" headers = {"Authorization": "Bearer 你的API令牌"} # 替换为实际令牌 # 获取仪表盘完整配置 fetch_url = f"{server}/api/dashboards/uid/{uid}" response = requests.get(fetch_url, headers=headers, verify=False) dashboard_config = response.json()
步骤2:从配置中移除目标面板
定位到配置中的dashboard['panels']数组,根据面板的id或title筛选掉要删除的面板。如果面板嵌套在分组(row)里,需要遍历dashboard['rows']下的panels数组处理:
# 示例:删除id为5的面板 target_panel_id = 5 # 处理顶层面板 dashboard_config['dashboard']['panels'] = [ p for p in dashboard_config['dashboard']['panels'] if p['id'] != target_panel_id ] # 如果有嵌套在row里的面板,额外处理 if 'rows' in dashboard_config['dashboard']: for row in dashboard_config['dashboard']['rows']: row['panels'] = [ p for p in row['panels'] if p['id'] != target_panel_id ]
步骤3:提交更新后的仪表盘配置
用PUT请求将修改后的配置提交回Grafana,注意设置overwrite: true以覆盖现有仪表盘:
update_payload = { "dashboard": dashboard_config['dashboard'], "folderId": dashboard_config['meta']['folderId'], "overwrite": True } update_url = f"{server}/api/dashboards/db" update_response = requests.put(update_url, json=update_payload, headers=headers, verify=False) # 验证操作结果 if update_response.status_code == 200: print("面板删除成功") else: print(f"删除失败:{update_response.json()}")
额外说明
- 确保你的API令牌拥有编辑仪表盘的权限(最低为Editor角色)
- 操作前建议备份仪表盘配置,防止误删内容
- 如果不需要用API,直接在Grafana界面进入仪表盘编辑模式,点击目标面板右上角的下拉菜单选择「Delete」即可完成删除
内容的提问来源于stack exchange,提问作者avm
相关产品推荐
相关产品推荐

