You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过API添加Grafana自定义面板?Python自动部署需求咨询

使用Python自动为新入职组织添加Grafana自定义仪表板面板

Grafana Dashboard API核心说明(官方文档中文整理)

Grafana的Dashboard API支持通过HTTP请求完成仪表板的创建、更新与管理,核心规则如下:

  • 核心端点:POST /api/dashboards/db —— 若指定的仪表板UID不存在则创建新面板,存在则执行更新
  • 认证方式:请求头需携带Authorization: Bearer <API密钥>,也可使用用户名+密码的基础认证方式
  • 请求体要求:必须包含dashboard(仪表板的完整JSON配置)、folderId(存放目录ID,默认0为根目录)字段

实现步骤

1. 前置准备

  • 从Grafana后台「配置」→「API密钥」生成具备Editor或Admin权限的密钥,确保该密钥拥有创建仪表板、访问目标组织资源的权限
  • 提前制作通用仪表板模板,将组织相关动态内容(如数据源过滤条件、面板标题中的组织名)替换为占位符(例:{{ORG_ID}}、{{ORG_NAME}})

2. Python脚本实现

使用requests库调用API,完成模板占位符替换与面板创建:

import requests
import json

# 基础配置
GRAFANA_ADDR = "http://your-grafana-server.com"
API_KEY = "your-generated-api-key"
TARGET_FOLDER_ID = 0  # 根目录ID,可根据需求修改

def create_org_dashboard(org_id, org_name, template_file):
    # 加载预定义模板
    with open(template_file, 'r', encoding='utf-8') as f:
        dash_template = json.load(f)
    
    # 替换组织相关占位符
    dash_template["title"] = dash_template["title"].replace("{{ORG_NAME}}", org_name)
    # 遍历面板,替换查询语句中的组织ID占位符
    for panel in dash_template["panels"]:
        if "targets" in panel:
            for target in panel["targets"]:
                if "{{ORG_ID}}" in target.get("expr", ""):
                    target["expr"] = target["expr"].replace("{{ORG_ID}}", str(org_id))
    
    # 构造请求体
    req_payload = {
        "dashboard": dash_template,
        "folderId": TARGET_FOLDER_ID,
        "overwrite": False  # 禁止覆盖已有同UID面板,需覆盖则设为True
    }
    
    # 发送API请求
    req_headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    }
    resp = requests.post(
        f"{GRAFANA_ADDR}/api/dashboards/db",
        headers=req_headers,
        data=json.dumps(req_payload)
    )
    
    # 响应处理
    if resp.status_code == 200:
        print(f"组织 {org_name}(ID:{org_id})的仪表板创建成功")
        return resp.json()
    else:
        print(f"创建失败:{resp.status_code} - {resp.text}")
        return None

# 示例调用:新入职组织ID=12,名称=TechNew,模板文件路径=./org_dash_template.json
create_org_dashboard(12, "TechNew", "./org_dash_template.json")

3. 集成到入职流程

  • 将上述函数嵌入组织入职系统的触发逻辑中,确保能获取新组织的ID、名称等关键参数
  • 可选添加重试机制,避免网络波动导致的创建失败
  • 可结合日志记录,追踪每个组织的面板创建状态

注意事项

  • 确保API密钥权限足够,避免因权限不足导致请求被拒
  • 模板占位符需覆盖所有组织相关动态内容,包括查询条件、变量、标题等
  • 若需为每个组织创建独立唯一的面板,可结合组织ID生成专属的uid字段写入模板

内容的提问来源于stack exchange,提问作者Junaid umer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:20:09