Create-Dashboards-With-Jsonnet

Last Update : 07 August, 2023 | Published : 24 April, 2023 | 2 Min Read

This article will demonstrate how to create grafana dashboards using go-jsonnet library

Here’s a basic example of how you can use go-jsonnet to evaluate a Jsonnet template and generate Grafana dashboard JSON:

  • Step 1: Define a Jsonnet template
func main() {
	// Define a Jsonnet template
	template := 
	{
		"title": "Example Dashboard",
		"panels": [
			{
				"type": "graph",
				"title": "Example Graph",
				"targets": [
					{
						"query": "SELECT count(*) FROM example_table"
					}
				]
			}
		]
	}
  • Step 2 Create a Jsonnet VM
vm := jsonnet.MakeVM()
  • Step 3 Evaluate the template
jsonString, err := vm.EvaluateSnippet("example.jsonnet", template)
	if err != nil {
		panic(err)
	}
  • Step 4 Convert the JSON string to a map
var dashboard map[string]interface{}
	err = json.Unmarshal([]byte(jsonString), &dashboard)
	if err != nil {
		panic(err)
	}
  • Step 5 Print the resulting dashboard JSON
jsonBytes, err := json.MarshalIndent(dashboard, "", "    ")
	if err != nil {
		panic(err)
	}
	fmt.Println(string(jsonBytes))
}

This example defines a simple Jsonnet template for a Grafana dashboard, evaluates it using a Jsonnet VM, and then converts the resulting JSON string to a map using the json.Unmarshal() function. The resulting map can then be further manipulated or serialized as needed.

Note that this is just a basic example, and there are many ways to extend and customize this approach for your specific needs

The next article will tell you about how to create a Jsonnet library that defines a set of functions and objects for creating and configuring the components of your dashboard in the frontend.

Looking for Cloud-Native Implementation?

Finding the right talent is pain. More so, keeping up with concepts, culture, technology and tools. We all have been there. Our AI-based automated solutions helps eliminate these issues, making your teams lives easy.

Contact Us