Documentation
¶
Overview ¶
Package grafanaclient provide a simple API to manage Grafana 2.0 DataSources and Dashboards in Go. It's using Grafana 2.0 REST API.
Index ¶
- type Annotation
- type Dashboard
- type DashboardResult
- type DashboardUploader
- type DataSource
- type GTime
- type GrafanaError
- type GrafanaMessage
- type Login
- type Meta
- type Panel
- type Row
- type Session
- func (s *Session) CreateDataSource(ds DataSource) (err error)
- func (s *Session) DeleteDashboard(name string) (err error)
- func (s *Session) DeleteDataSource(ds DataSource) (err error)
- func (s *Session) DoLogon() (err error)
- func (s *Session) GetDashboard(name string) (dashboard DashboardResult, err error)
- func (s *Session) GetDataSource(name string) (ds DataSource, err error)
- func (s *Session) GetDataSourceList() (ds []DataSource, err error)
- func (s *Session) UploadDashboard(dashboard Dashboard, overwrite bool) (err error)
- func (s *Session) UploadDashboardString(dashboard string, overwrite bool) (err error)
- type Target
- type Template
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Annotation ¶
type Annotation struct {
Enable bool `json:"enable"`
List []interface{} `json:"list"`
}
A Annotation contains the current annotations of a dashboard
type Dashboard ¶
type Dashboard struct {
Editable bool `json:"editable"`
HideControls bool `json:"hideControls"`
ID int `json:"id"`
OriginalTitle string `json:"originalTitle"`
Refresh bool `json:"refresh"`
Annotations Annotation `json:"annotations"`
SchemaVersion int `json:"schemaVersion"`
Style string `json:"style"`
Templating Template `json:"templating"`
Tags []interface{} `json:"tags"`
GTime GTime `json:"time"`
Rows []Row `json:"rows"`
Title string `json:"title"`
Version int `json:"version"`
Timezone string `json:"timezone"`
}
A Dashboard contains the Dashboard structure.
type DashboardResult ¶
A DashboardResult contains the response from Grafana when requesting a Dashboard. It contains the Dashboard itself and the meta data.
type DashboardUploader ¶
type DashboardUploader struct {
Dashboard Dashboard `json:"dashboard"`
Overwrite bool `json:"overwrite"`
}
A DashboardUploader encapsulates a complete Dashboard
type DataSource ¶
type DataSource struct {
ID int `json:"Id"`
OrgID int `json:"orgId"`
Name string `json:"name"`
Type string `json:"type"`
Access string `json:"access"`
URL string `json:"url"`
Password string `json:"password"`
User string `json:"user"`
Database string `json:"database"`
BasicAuth bool `json:"basicAuth"`
BasicAuthUser string `json:"basicAuthUser"`
BasicAuthPassword string `json:"basicAuthPassword"`
IsDefault bool `json:"isDefault"`
}
A DataSource contains the json structure of Grafana DataSource
type GrafanaError ¶
GrafanaError is a error structure to handle error messages in this library
func (GrafanaError) Error ¶
func (h GrafanaError) Error() string
Error generate a text error message. If Code is zero, we know it's not a http error.
type GrafanaMessage ¶
type GrafanaMessage struct {
Message string `json:"message"`
}
A GrafanaMessage contains the json error message received when http request failed
type Login ¶
type Login struct {
User string `json:"user"`
Email string `json:"email"`
Password string `json:"password"`
}
A Login contains the json structure of Grafana authentication request
type Meta ¶
type Meta struct {
Created string `json:"created"`
Expires string `json:"expires"`
IsHome bool `json:"isHome"`
IsSnapshot bool `json:"isSnapshot"`
IsStarred bool `json:"isStarred"`
Slug string `json:"slug"`
}
A Meta contains a Dashboard metadata.
type Panel ¶
type Panel struct {
Content string `json:"content"`
Editable bool `json:"editable"`
Error bool `json:"error"`
ID int `json:"id"`
Mode string `json:"mode"`
Span int `json:"span"`
Style struct{} `json:"style"`
Title string `json:"title"`
Type string `json:"type"`
Targets []Target `json:"targets"`
}
A Panel is a component of a Row. It can be a chart, a text or a single stat panel
type Row ¶
type Row struct {
Collapse bool `json:"collapse"`
Editable bool `json:"editable"`
Height string `json:"height"`
Panels []Panel `json:"panels"`
Title string `json:"title"`
}
A Row is a dashboard Row it can contians multiple panels
type Session ¶
Session contains user credentials, url and a pointer to http client session.
func NewSession ¶
NewSession creates a new http connection . It includes a cookie jar used to keep session cookies. The URL url specifies the host and request URI.
It returns a Session struct pointer.
func (*Session) CreateDataSource ¶
func (s *Session) CreateDataSource(ds DataSource) (err error)
CreateDataSource creates a Grafana DataSource. It take a DataSource struct in parameter. It returns a error if it cannot perform the creation.
Example ¶
package main
import (
"github.com/adejoux/grafanaclient"
)
func main() {
myurl := "http://localhost:3000"
myds := grafanaclient.DataSource{Name: "testgf",
Type: "influxdb_08",
Access: "direct",
URL: "http://localhost:8086",
User: "root",
Password: "root",
Database: "test",
}
session := grafanaclient.NewSession("admin", "admin", myurl)
session.DoLogon()
session.CreateDataSource(myds)
}
func (*Session) DeleteDashboard ¶
DeleteDashboard delete a Grafana Dashboard. First, it try to retrieve it. And if successful, delete it using the slug attribute It returns a error if a problem occurs when deleting the dashboard.
func (*Session) DeleteDataSource ¶
func (s *Session) DeleteDataSource(ds DataSource) (err error)
DeleteDataSource deletes a Grafana DataSource. It take a existing DataSource struct in parameter. It returns a error if it cannot perform the deletion.
Example ¶
package main
import (
"github.com/adejoux/grafanaclient"
)
func main() {
myurl := "http://localhost:3000"
session := grafanaclient.NewSession("admin", "admin", myurl)
session.DoLogon()
ds, _ := session.GetDataSource("testgf")
session.DeleteDataSource(ds)
}
func (*Session) DoLogon ¶
DoLogon uses a new http connection using the credentials stored in the Session struct. It returns a error if it cannot perform the login.
func (*Session) GetDashboard ¶
func (s *Session) GetDashboard(name string) (dashboard DashboardResult, err error)
GetDashboard get a existing Dashboard by name. It takes a name string in parameter. It return a bytes.Buffer pointer. It returns a error if a problem occurs when trying to retrieve the DataSource.
func (*Session) GetDataSource ¶
func (s *Session) GetDataSource(name string) (ds DataSource, err error)
GetDataSource get a existing DataSource by name. It return a DataSource struct. It returns a error if a problem occurs when trying to retrieve the DataSource.
func (*Session) GetDataSourceList ¶
func (s *Session) GetDataSourceList() (ds []DataSource, err error)
GetDataSourceList return a listof existing Grafana DataSources. It return a array of DataSource struct. It returns a error if it cannot get the DataSource list.
func (*Session) UploadDashboard ¶
UploadDashboard upload a new Dashboard. It takes a dashboard structure in parameter. It encapsulate it in a DashboardUploader structure. overwrite parameter define if it overwrite existing dashboard. It returns a error if a problem occurs when creating the dashboard.
func (*Session) UploadDashboardString ¶
UploadDashboardString upload a new Dashboard. It takes a string cotnaining the json structure in parameter. This string will be decoded against a Dashboard struct for validation. If valid, the dashboard structure will be sent to UploadDashboard. overwrite parameter define if it overwrite existing dashboard. It returns a error if a problem occurs when trying to create the dashboard.