Skip to content

A Go SDK for building backend plugins for Grafana

Notifications You must be signed in to change notification settings

marefr/grafana-plugin-sdk-go

 
 

Repository files navigation

Grafana Plugin SDK for Go

Develop Grafana backend plugins with this Go SDK.

Warning: This SDK is currently in alpha and will likely have major breaking changes during early development. Please do not consider this SDK published until this warning has been removed.

Usage

package main

import (
	"context"
	"log"
	"os"

	gf "github.com/grafana/grafana-plugin-sdk-go"
)

const pluginID = "myorg-custom-datasource"

type MyDataSource struct {
	logger *log.Logger
}

func (d *MyDataSource) Query(ctx context.Context, tr gf.TimeRange, ds gf.DataSourceInfo, queries []gf.Query) ([]gf.QueryResult, error) {
	return []gf.QueryResult{}, nil
}

func main() {
	logger := log.New(os.Stderr, "", 0)

	srv := gf.NewServer()

	srv.HandleDataSource(pluginID, &MyDataSource{
		logger: logger,
	})

	if err := srv.Serve(); err != nil {
		logger.Fatal(err)
	}
}

Developing

Generate Go code for Protobuf definitions

make build-proto

Changing generic_*.go files in the dataframe package

Currently genny is used for generating some go code. If you make changes to generic template files then genny needs to be installed, and then go generate needs to be run from with the dataframe directory. Changed generated files should be committed with the change in the template files.

About

A Go SDK for building backend plugins for Grafana

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 97.7%
  • Shell 1.1%
  • Other 1.2%