Skip to content

Grafonnet

Jsonnet library for generating Grafana dashboards.

Introduction

This library is generated from JSON Schemas generated by Grok, these schemas are generated directly from the Grafana repository to ensure Grafonnet can keep up with Grafana development.

Grafonnet is the spiritual successor of grafonnet-lib. As grafonnet-lib was manually written, it had a hard time to keep up with Grafana development, this resulted in it being under-maintained. Besides that, it also came with a performance penalty in jsonnet as it used the builder pattern, although visually appealing it becomes very slow for environments that need to manage many dashboards.

This library is experimental

The code in this repository should be considered experimental. Documentation is only available alongside the code. It comes without support, but we are keen to receive feedback on the product and suggestions on how to improve it, though we cannot commit to resolution of any particular issue. No SLAs are available. It is not meant to be used in production environments, and the risks are unknown/high.

Additional information can be found in Release life cycle for Grafana Labs.

Requirements

Grafonnet uses the Jsonnet programming language.

NOTE: There is a significant performance issue with the C implementation of Jsonnet. You are strongly recommended to use the newer go-jsonnet Jsonnet implementation. This is also the implementation recommended by the Jsonnet developers themselves.

The library can be installed with jsonnet-bundler.

Install

To add grafonnet to a jsonnet project:

jb install github.com/grafana/grafonnet/gen/grafonnet-latest@main

Usage

// dashboard.jsonnet
local grafonnet = import 'github.com/grafana/grafonnet/gen/grafonnet-latest/main.libsonnet';

grafonnet.dashboard.new('My Dashboard')
jsonnet -J vendor dashboard.jsonnet