菜单
文档breadcrumb arrow Grafana 文档breadcrumb arrow 可观测性即代码breadcrumb arrow 可观测性即代码入门
Enterprise 开源

可观测性即代码入门

Grafana 提供了一套用于**可观测性即代码**的工具,帮助您以编程方式大规模管理 Grafana 资源。这种方法允许您在代码中定义仪表盘、数据源和其他配置,通过 CI/CD 流水线实现版本控制、自动化测试和可靠部署。

过去,将 Grafana 作为代码进行管理涉及各种社区和 Grafana Labs 工具,但缺乏统一、连贯的方案。Grafana 12 引入了基础性改进,包括新的版本化 API 和官方工具,提供了更清晰的发展路径。

Grafana CLI (grafanactl)

使用官方命令行工具 grafanactl,通过新的 API 与您的 Grafana 实例交互并管理资源。

  • 它是自动化和直接 API 交互的推荐工具,适用于 CI/CD 流水线以及本地开发或自由形式的任务。它支持从远程实例拉取/推送配置、验证配置等。
  • grafanactl 可在 Grafana OSS、Enterprise 和 Cloud 的所有环境中工作。

请参阅Grafana CLI (grafanactl) 文档了解更多信息。

Git Sync

对于专注于仪表盘的集成式 UI 驱动 Git 工作流程,请探索 Git Sync。

  • 将文件夹或整个 Grafana 实例直接连接到 GitHub 仓库,以同步仪表盘定义,从而直接从 Grafana 实现版本控制、分支和拉取请求。
  • Git Sync 提供了一种简单、开箱即用的方法来管理仪表盘作为代码。

    注意

    Git Sync 是 Grafana 12 中的一项**实验性功能**,可在 Grafana OSS 和 Enterprise 每夜版本中获得。它尚未在 Grafana Cloud 中提供。

请参阅 Git Sync 文档了解更多信息。

直接使用 API

为了获得最大的灵活性、满足高级用例或构建自定义工具,您可以直接与底层版本化 API 进行交互。

  • 此方法需要处理 HTTP 请求和响应,但可以完全控制资源管理。
  • grafanactl、Git Sync 和 Foundation SDK 都构建在这些 API 之上。
  • 要了解 API 接受的仪表盘 Schema,请参阅JSON 模型文档。

请参阅Grafana API 文档了解更多信息。

Foundation SDK

要使用熟悉的编程语言以编程方式定义您的 Grafana 资源(如仪表盘或警报),请使用 Foundation SDK。

  • 使用 Go、TypeScript、Python、Java 和 PHP 等语言中的强类型构建器定义资源。
  • 避免手动构建复杂的 JSON,并将资源生成集成到您现有的开发工作流程中。
  • 在编译时捕获错误,并轻松将资源生成集成到您的 CI/CD 流水线中。
  • 结合 grafanactl 使用,以推送您以编程方式生成的资源。

请参阅Foundation SDK 文档了解更多信息。

其他可观测性即代码工具

如果您已在使用成熟的基础设施即代码或其他配置管理工具,Grafana 提供了集成,可以在您现有的工作流程中管理资源。

  • Terraform

    • 使用 Grafana Terraform provider 管理仪表盘、警报等。
    • 了解如何使用 HCL/JSON 配置定义和部署资源。
  • Ansible

    • 了解如何使用 Grafana Ansible collection 管理 Grafana Cloud 资源,包括文件夹和 Cloud stack。
    • 编写 playbook 通过 Grafana API 自动化资源预配。
  • Grafana Operator

    • 使用 Grafana Operator 利用 Kubernetes 原生管理。
    • 通过 Kubernetes Custom Resources 管理仪表盘、文件夹和数据源。
    • 与 GitOps 工作流程集成,实现无缝版本控制和部署。
  • Crossplane 允许您使用 Kubernetes manifest 和 Grafana Crossplane provider 管理 Grafana 资源。

  • Grafonnet 是一个 Jsonnet 库,用于以编程方式生成 Grafana 仪表盘 JSON 定义。它目前正处于弃用过程中。

  • Grizzly 是一个已弃用的命令行工具,它使用受 Kubernetes 启发的 YAML 语法简化了 Grafana 资源的管理。