Query the Grafana API based off dashboards and panels and return the data in either prometheus or grafana format
go get github.com/weka/grafanadata/go/pkg/grafanadatapackage 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)
}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)
}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)
}
}