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) }
Output:
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) }
Output:
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