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 DataSourcePlugin
- type DataSourcePlugins
- type GTime
- type GrafanaError
- type GrafanaMessage
- type GroupBy
- type Legend
- type Login
- type Meta
- type Metric
- type Panel
- type Plugin
- type PluginPartial
- type Plugins
- type Row
- type Select
- type Selects
- type SeriesOverride
- 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) GetDataSourcePlugins() (plugins DataSourcePlugins, err error)
- func (s *Session) GetPlugins(pluginType string) (plugins Plugins, err error)
- func (s *Session) UploadDashboard(dashboard Dashboard, overwrite bool) (err error)
- func (s *Session) UploadDashboardString(dashboard string, overwrite bool) (err error)
- type Tag
- type Target
- type Template
- type Templates
- type Templating
- type Tooltip
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 string `json:"refresh"`
Annotations Annotation `json:"annotations"`
SchemaVersion int `json:"schemaVersion"`
Style string `json:"style"`
Templating Templating `json:"templating,omitempty" toml:"templates"`
Tags []interface{} `json:"tags"`
GTime GTime `json:"time" toml:"time"`
Rows []Row `json:"rows" toml:"row"`
Title string `json:"title"`
Version int `json:"version"`
Timezone string `json:"timezone"`
}
A Dashboard contains the Dashboard structure.
func ConvertTemplate ¶ added in v0.2.0
ConvertTemplate converts a string to a 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 DataSourcePlugin ¶ added in v0.2.0
type DataSourcePlugin struct {
Annotations struct {
Enable bool `json:"enable"`
List []interface{} `json:"list"`
} `json:"annotations"`
Module string `json:"module"`
Name string `json:"name"`
Partials PluginPartial
PluginType string `json:"pluginType"`
ServiceName string `json:"serviceName"`
Type string `json:"type"`
}
A DataSourcePlugin contains the json structure of Grafana DataSource plugin
type DataSourcePlugins ¶ added in v0.2.0
type DataSourcePlugins map[string]DataSourcePlugin
A DataSourcePlugins contains a map of DataSourcePlugin
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 GroupBy ¶ added in v0.2.0
type GroupBy struct {
Type string `json:"type"`
Interval string `json:"interval,omitempty"`
Params []string `json:"params"`
}
A GroupBy struct is used to setup the group by part of the query
func NewGroupBy ¶ added in v0.2.0
func NewGroupBy() []GroupBy
NewGroupBy initialize a GroupBy structure
type Legend ¶ added in v0.2.0
type Legend struct {
Show bool `json:"show"`
Values bool `json:"values"`
Min bool `json:"min"`
Max bool `json:"max"`
Current bool `json:"current"`
Total bool `json:"total"`
Avg bool `json:"avg"`
AlignAsTable bool `json:"alignAsTable"`
}
A Legend specify the legend options used by the Panel
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 Metric ¶ added in v0.2.0
A Metric is only used in TOML templates to define the targets to create
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"`
Fill int `json:"fill"`
Stack bool `json:"stack"`
Targets []Target `json:"targets" toml:"target"`
Metrics []Metric `json:"-" toml:"metric"`
SeriesOverrides []SeriesOverride `json:"seriesOverrides,omitempty" toml:"override"`
Tooltip Tooltip `json:"tooltip,omitempty"`
PageSize int `json:"pageSize,omitempty" toml:"pageSize,omitempty"`
Legend Legend `json:"legend,omitempty"`
LeftYAxisLabel string `json:"leftYAxisLabel,omitempty"`
RightYAxisLabel string `json:"rightYAxisLabel,omitempty"`
DataSource string `json:"datasource,omitempty"`
NullPointMode string `json:"nullPointMode,omitempty"`
ValueName string `json:"valueName,omitempty"`
Lines bool `json:"lines,omitempty"`
Linewidth int `json:"linewidth,omitempty"`
Points bool `json:"points,omitempty"`
Pointradius int `json:"pointradius,omitempty"`
Bars bool `json:"bars,omitempty"`
Percentage bool `json:"percentage,omitempty"`
SteppedLine bool `json:"steppedLine,omitempty"`
TimeFrom interface{} `json:"timeFrom,omitempty"`
TimeShift interface{} `json:"timeShift,omitempty"`
}
A Panel is a component of a Row. It can be a chart, a text or a single stat panel
type Plugin ¶ added in v0.2.0
type Plugin struct {
Name string `json:"name"`
Type string `json:"type"`
ID string `json:"id"`
Enabled bool `json:"enabled"`
Pinned bool `json:"pinned"`
Info struct {
Author struct {
Name string `json:"name"`
URL string `json:"url"`
} `json:"author"`
Description string `json:"description"`
Links interface{} `json:"links"`
Logos struct {
Small string `json:"small"`
Large string `json:"large"`
} `json:"logos"`
Screenshots interface{} `json:"screenshots"`
Version string `json:"version"`
Updated string `json:"updated"`
} `json:"info"`
LatestVersion string `json:"latestVersion"`
HasUpdate bool `json:"hasUpdate"`
}
Plugin is a Grafana 3.0 structure for plugins
type PluginPartial ¶ added in v0.2.0
A PluginPartial contains the json structure of Grafana DataSource Plugin Partial
type Row ¶
type Row struct {
Collapse bool `json:"collapse"`
Editable bool `json:"editable"`
Height string `json:"height"`
Panels []Panel `json:"panels" toml:"panel"`
Title string `json:"title"`
}
A Row is a dashboard Row it can contains multiple panels
type SeriesOverride ¶ added in v0.2.0
type SeriesOverride struct {
Alias string `json:"alias"`
Stack bool `json:"stack"`
Fill int `json:"fill"`
Transform string `json:"transform"`
}
A SeriesOverride allows to setup specific override by serie
func NewSeriesOverride ¶ added in v0.2.0
func NewSeriesOverride(alias string) SeriesOverride
NewSeriesOverride create a new Grafana series override using the specified alias
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 list of existing Grafana DataSources. It return a array of DataSource struct. It returns a error if it cannot get the DataSource list.
func (*Session) GetDataSourcePlugins ¶ added in v0.2.0
func (s *Session) GetDataSourcePlugins() (plugins DataSourcePlugins, err error)
GetDataSourcePlugins return a list of existing Grafana DataSources. It return a array of DataSource struct. It returns a error if it cannot get the DataSource list.
func (*Session) GetPlugins ¶ added in v0.2.0
GetPlugins get the list of plugins by PluginType
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.
type Tag ¶ added in v0.2.0
type Tag struct {
Condition string `json:"condition"`
Key string `json:"key"`
Value string `json:"value"`
}
A Tag allows to filter the values
type Target ¶
type Target struct {
Alias string `json:"alias"`
Hide bool `json:"hide"`
Measurement string `json:"measurement"`
GroupBy []GroupBy `json:"groupBy"`
Select []Selects `json:"select,omitempty"`
Tags []Tag `json:"tags"`
DsType string `json:"dsType,omitempty"`
Transform string `json:"transform,omitempty" toml:"transform,omitempty"`
}
A Target specify the metrics used by the Panel
func NewTarget ¶ added in v0.2.0
func NewTarget() Target
NewTarget create a new Grafana target with default values
func (*Target) FilterByTag ¶ added in v0.2.0
FilterByTag add a Tag to an existing target. It takes a name and value strings in parameter.
func (*Target) GroupByTag ¶ added in v0.2.0
GroupByTag add a group by selection to the Target It takes a string in parameter specifying the tag name
type Template ¶
type Template struct {
AllFormat string `json:"allFormat"`
Current struct {
Tags []interface{} `json:"tags"`
Text string `json:"text"`
Value interface{} `json:"value"`
} `json:"current,omitempty"`
Datasource string `json:"datasource"`
IncludeAll bool `json:"includeAll"`
Multi bool `json:"multi"`
MultiFormat string `json:"multiFormat"`
Name string `json:"name"`
Options []struct {
Selected bool `json:"selected"`
Text string `json:"text"`
Value string `json:"value"`
} `json:"options,omitempty"`
Query string `json:"query"`
Refresh string `json:"refresh"`
RefreshOnLoad bool `json:"refresh_on_load"`
Regex string `json:"regex"`
Type string `json:"type"`
}
Template define a variable usable in Grafana
func NewTemplate ¶ added in v0.2.0
func NewTemplate() Template
NewTemplate create a default template for Grafana
type Templating ¶ added in v0.2.0
type Templating struct {
List Templates `json:"list" toml:"template"`
}
A Templating contains a List of Templates usable in Dashboard