菜单
Enterprise Open source

Grafana 的新 API 结构

概览

今后,Grafana 的 HTTP API 将遵循标准化的 API 结构并采用一致的 API 版本控制。

API 路径结构

所有 Grafana API 都遵循此标准化格式

/apis/<group>/<version>/namespaces/<namespace>/<resource>[/<name>]

其中最后的 /<name> 段用于操作单个资源(如 Get、Update、Delete),对于集合操作(如 List、Create)则省略。

理解组件

组 (<group>)

组将相关功能组织到逻辑集合中。例如,dashboard.grafana.app 将用于所有与仪表盘相关的操作。

版本 (<version>)

这些 API 还将使用语义版本控制,具有三个稳定性级别

级别格式描述用例
Alphav1alpha1早期开发阶段。不稳定,可能包含错误,并可能移除用于测试新功能
Betav1beta1比 alpha 更稳定,但可能仍有部分变更用于早期生产使用
GAv1正式发布。稳定,并保证向后兼容用于生产使用

命名空间 (<namespace>)

命名空间隔离了 Grafana 实例中的资源。格式因部署类型而异

OSS 和本地部署的 Grafana

  • 默认组织 (org 1): default
  • 其他组织: org-<org_id>

Grafana Cloud

  • 格式: stacks-<stack_id>
  • 您的实例 ID 即 stack_id。您可以通过以下方式查找此值
    • 访问 grafana.com,点击您的 stack,然后在您的 Grafana 实例上选择“Details”
    • 访问您的 Cloud 实例中的 /swagger 页面,命名空间将在相关端点上自动填充

资源 (<resource>)

表示您想要交互的核心资源,例如

  • 仪表盘 (dashboards)
  • 播放列表 (playlists)
  • 文件夹 (folders)

名称 ()

<name> 是资源在其命名空间和资源类型中的唯一标识符。<name> 不同于 metadata.uid 字段。URL 路径将始终使用 metadata.name。

例如,要获取定义为

{
  "kind": "Dashboard",
  "apiVersion": "dashboard.grafana.app/v1beta1",
  "metadata": {
    "name": "production-overview", // This value IS used in the URL path
    "namespace": "default",
    "uid": "a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8" // This value is NOT used in the URL path
    // ... other metadata
  },
  "spec": {
    // ... dashboard spec
  }
}

您将使用以下 API 调用

GET /apis/dashboard.grafana.app/v1beta1/namespaces/default/dashboards/production-overview