菜单
企业版 开源 RSS

Grafana Foundation SDK 入门

Grafana Foundation SDK 是一套工具、类型和库,可让您使用强类型代码定义 Grafana 面板和资源。通过将面板写成代码,您可以

  • 利用强类型:在编译时捕获错误,确保更可靠的配置。
  • 增强版本控制:使用 Git 等标准版本控制系统无缝跟踪变更。
  • 自动化部署:将面板供应集成到您的 CI/CD 流水线中,实现一致且可重复的设置。

SDK 支持多种编程语言,包括 Go、Java、PHP、Python 和 TypeScript,让您可以选择最适合您的开发环境的语言。

开始之前

请确保您具备以下前提条件

  • 编程环境:为您选择的语言进行设置(例如,TypeScript 使用 Node.js,Python 使用 Python 3.x)。
  • Grafana 实例:一个正在运行的 Grafana 实例,与您使用的 SDK 版本兼容(请参阅兼容性矩阵)。
  • 包管理器:适合您的语言(例如,JavaScript 或 TypeScript 使用 npmyarn,Python 使用 pip)。

安装 Grafana Foundation SDK

TypeScript

对于 TypeScript,通过 npm 安装 SDK 包

bash
npm install @grafana/grafana-foundation-sdk

或者使用 yarn

bash
yarn add @grafana/grafana-foundation-sdk

Go

对于 Go,通过 go get 安装 SDK 包

Go
go get github.com/grafana/grafana-foundation-sdk/go

Python

对于 Python,使用 pip 安装 SDK

bash
pip install grafana-foundation-sdk

对于其他语言,请查阅 Grafana Foundation SDK 文档获取详细安装说明。

创建面板

以下示例演示了如何使用 TypeScript 创建一个简单的面板

bash
import { DashboardBuilder, RowBuilder } from '@grafana/grafana-foundation-sdk/dashboard';
import { DataqueryBuilder } from '@grafana/grafana-foundation-sdk/prometheus';
import { PanelBuilder } from '@grafana/grafana-foundation-sdk/timeseries';
const builder = new DashboardBuilder('Sample Dashboard')
  .uid('sample-dashboard')
  .tags(['example', 'typescript'])
  .refresh('1m')
  .time({from: 'now-30m', to: 'now'})
  .timezone('browser')
  .withRow(new RowBuilder('Overview'))
  .withPanel(
    new PanelBuilder()
      .title('Network Received')
      .unit('bps')
      .min(0)
      .withTarget(
        new DataqueryBuilder()
          .expr('rate(node_network_receive_bytes_total{job="example-job", device!="lo"}[$__rate_interval]) * 8')
          .legendFormat("{{ device }}")
      )
  )
;
console.log(JSON.stringify(builder.build(), null, 2));

此代码定义了一个标题为“Sample Dashboard”的面板,其中包含一个显示网络上接收到的数据的单个面板。

导出和使用 JSON

build() 方法生成您的面板的 JSON 表示,您可以将其

  • 手动导入:粘贴到 Grafana 的面板导入功能中。
  • 自动化:使用 Grafana 的 API 以编程方式上传面板 JSON。

后续步骤

现在您已了解使用 Grafana Foundation SDK 的基础知识,以下是一些后续步骤

  • 探索更多功能:查阅完整的 API 参考文档,了解高级面板配置。
  • 版本控制您的面板:将您的面板代码存储在 Git 仓库中,以跟踪随时间发生的变更。
  • 使用 CI/CD 自动化面板供应:将 SDK 集成到您的 CI/CD 流水线中,以自动部署面板。