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 使用
npm
或yarn
,Python 使用pip
)。
安装 Grafana Foundation SDK
TypeScript
对于 TypeScript,通过 npm
安装 SDK 包
npm install @grafana/grafana-foundation-sdk
或者使用 yarn
yarn add @grafana/grafana-foundation-sdk
Go
对于 Go,通过 go get
安装 SDK 包
go get github.com/grafana/grafana-foundation-sdk/go
Python
对于 Python,使用 pip
安装 SDK
pip install grafana-foundation-sdk
对于其他语言,请查阅 Grafana Foundation SDK 文档获取详细安装说明。
创建面板
以下示例演示了如何使用 TypeScript 创建一个简单的面板
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 流水线中,以自动部署面板。