The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/docs/sources/observability-as-code/foundation-sdk/_index.md

4.0 KiB

description keywords labels title weight
Learn about the Foundation SDK, a set of tools, types, and libraries for defining Grafana dashboards and resources. [as code as-code Foundation SDK] [{products [enterprise oss]}] Foundation SDK 250

Get started with the Grafana Foundation SDK

The Grafana Foundation SDK is a set of tools, types, and libraries that let you define Grafana dashboards and resources using strongly typed code. By writing your dashboards as code, you can:

  • Leverage strong typing: Catch errors at compile time, ensuring more reliable configurations.
  • Enhance version control: Track changes seamlessly using standard version control systems like Git.
  • Automate deployments: Integrate dashboard provisioning into your CI/CD pipelines for consistent and repeatable setups.

The SDK supports multiple programming languages, including Go, Java, PHP, Python, and TypeScript, allowing you to choose the one that best fits your development environment.

Before you begin

Ensure you have the following prerequisites:

  • Programming environment: Set up for your chosen language (for example, Node.js for TypeScript, Python 3.x for Python).
  • Grafana instance: A running Grafana instance compatible with the SDK version you’re using (refer to the compatibility matrix).
  • Package manager: Appropriate for your language (for example, npm or yarn for JavaScript or TypeScript, pip for Python).

Install the Grafana Foundation SDK

TypeScript

For TypeScript, install the SDK package via npm:

npm install @grafana/grafana-foundation-sdk

Or use yarn:

yarn add @grafana/grafana-foundation-sdk

Go

For Go, install the SDK package via go get:

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

Python

For Python, install the SDK using pip:

pip install grafana-foundation-sdk

For other languages, refer to the Grafana Foundation SDK documentation for detailed installation instructions.

Create a dashboard

The following example demonstrates how you can create a simple dashboard using 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));

This code defines a dashboard titled “Sample Dashboard” with a single panel displaying data received on the network.

Export and use the JSON

The build() method generates a JSON representation of your dashboard, which you can:

  • Manually import: Paste into Grafana’s dashboard import feature.
  • Automate: Use Grafana’s API to programmatically upload the dashboard JSON.

Next steps

Now that you understand the basics of using the Grafana Foundation SDK, here are some next steps:

  • Explore more features: Check out the full API reference to learn about advanced dashboard configurations.
  • Version control your dashboards: Store your dashboard code in a Git repository to track changes over time.
  • Automate dashboard provisioning with CI/CD: Integrate the SDK into your CI/CD pipeline to deploy dashboards automatically.