用途:通过 Grafana 的 HTTP API,以编程方式管理仪表盘、数据源、文件夹、告警规则、注释、用户与团队等资源,主要面向用 TypeScript 和命令行完成 Grafana 运维与批量操作。
主要能力:提供仪表盘 CRUD 命令行工具(Tools/DashboardCrud.ts),支持列出、按 UID 获取、导出为 JSON、创建、更新、克隆、查看版本历史、恢复指定版本和删除;提供 GrafanaClient TypeScript 库(Tools/GrafanaClient.ts),可搜索仪表盘、按 UID 获取、保存与删除仪表盘、获取与恢复版本,并支持文件夹、数据源、告警、注释等操作。References/ 目录提供仪表盘、数据源、告警、文件夹、注释、用户团队及常见模式的 API 参考。
使用方式:设置环境变量 export GRAFANA_URL 与 export GRAFANA_TOKEN(推荐服务账号令牌),然后运行命令,例如 bun run Tools/DashboardCrud.ts list;可通过 --query、--tag 过滤,用 get、export、create、update、clone、versions、restore、delete 执行对应操作。库用法为 import 后 createGrafanaClient() 或传入 baseUrl、token、orgId 初始化,再调用相应方法。多组织场景可用 X-Grafana-Org-Id 请求头。
限制与注意:令牌按组织隔离,多组织需分别使用令牌;更新时建议带版本号以避免覆盖并发修改,overwrite 需谨慎;应优先使用 UID 而非 ID;服务账号令牌优于已弃用的 API key。常见错误码包括 400、401、403、404、409、412。数据源权限、变量插值差异、YAML provisioning 与 UI 编辑冲突、注释缺少时间字段静默返回空等问题需注意;告警状态存于 Grafana 数据库,回滚 Grafana 会丢失其状态历史。