Skip to content

weka/grafanadata

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grafanadata

Query the Grafana API based off dashboards and panels and return the data in either prometheus or grafana format

Install

go get github.com/weka/grafanadata/go/pkg/grafanadata

Example usage

package main

import (
	"log"
	"time"

	"github.com/weka/grafanadata/go/pkg/grafanadata"
)

func main() {

	u := "http://localhost:3000/"
	t := "glsa_5N21WQvXza0oWkbqQvjOhII8yJYxGS0G_fbb82943"
	uid := "bebca380-068d-463d-9c9c-1bb19cb8d2b3"
	panelID := 7


	client, err := grafanadata.NewGrafanaClient(u, t)

	if err != nil {
		log.Fatal(err)
	}

	start := time.Now().Add(time.Hour * 24 * -2)
	data, err := client.GetPanelDataFromID(uid, panelID, start)

	if err != nil {
		log.Fatal(err)
	}

	log.Default().Println(data)
}

Convert response to a Prometheus Format

func main() {

	...

	uid := "bebca380-068d-463d-9c9c-1bb19cb8d2b3"
	panelID := 7

	// Get last 24 hours
	data, err := client.GetPanelDataFromID(uid, panelID, time.Now().Add(time.Hour*24*-1))
	if err != nil {
		return err
	}
	prometheusData := grafanadata.ConvertResultToPrometheusFormat(data)
	log.Println(prometheusData)

}

Iterate through an entire dashboard

func main() {
	...

	uid := "bebca380-068d-463d-9c9c-1bb19cb8d2b3"

	resp, err := client.GetDashboard(uid)
	if err != nil {
		return
	}

	start := time.Now().Add(time.Hour * 24 * -2)
	for _, panel := range resp.Dashboard.Panels {
		data, _ := client.GetPanelDataFromID(uid, panel.ID, start)
		log.Println(data)
	}
}

About

Query the Grafana API based off dashboards and panels and return the data in either prometheus or grafana format

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Go 100.0%