Documentation
¶
Index ¶
- Constants
- Variables
- type Board
- type BoardProperties
- type BoolInt
- type BoolString
- type Client
- func (r *Client) CreateDatasource(ds Datasource) (StatusMessage, error)
- func (r *Client) DeleteActualOrgUser(uid uint) (StatusMessage, error)
- func (r *Client) DeleteDashboard(slug string) (StatusMessage, error)
- func (r *Client) DeleteDatasource(id uint) (StatusMessage, error)
- func (r *Client) GetActualOrg() (Org, error)
- func (r *Client) GetActualOrgUsers() ([]User, error)
- func (r *Client) GetActualUser() (User, error)
- func (r *Client) GetAllDatasources() ([]Datasource, error)
- func (r *Client) GetAllUsers() ([]User, error)
- func (r *Client) GetDashboard(slug string) (Board, BoardProperties, error)
- func (r *Client) GetDatasource(id uint) (Datasource, error)
- func (r *Client) GetDatasourceTypes() (map[string]DatasourceType, error)
- func (r *Client) GetRawDashboard(slug string) ([]byte, BoardProperties, error)
- func (r *Client) GetUser(id uint) (User, error)
- func (r *Client) SearchDashboards(query string, starred bool, tags ...string) ([]FoundBoard, error)
- func (r *Client) SetDashboard(board Board, overwrite bool) error
- func (r *Client) SetRawDashboard(raw []byte) error
- func (r *Client) UpdateActualOrg(org Org) (StatusMessage, error)
- func (r *Client) UpdateDatasource(ds Datasource) (StatusMessage, error)
- type CustomPanel
- type DashlistPanel
- type Datasource
- type DatasourceType
- type FoundBoard
- type GraphPanel
- type IntString
- type Org
- type OrgUser
- type Panel
- func (p *Panel) AddTarget(t *Target)
- func (p *Panel) GetTargets() *[]Target
- func (p *Panel) MarshalJSON() ([]byte, error)
- func (p *Panel) RepeatDatasourcesForEachTarget(dsNames ...string)
- func (p *Panel) RepeatTargetsForDatasources(dsNames ...string)
- func (p *Panel) ResetTargets()
- func (p *Panel) SetTarget(t *Target)
- func (p *Panel) UnmarshalJSON(b []byte) (err error)
- type PluginlistPanel
- type Row
- type SinglestatPanel
- type StatusMessage
- type TablePanel
- type Target
- type TextPanel
- type User
Examples ¶
Constants ¶
const ( TemplatingHideNone = iota TemplatingHideLabel TemplatingHideVariable )
Constants for templating
const ( CustomType panelType = iota DashlistType GraphType TableType TextType PluginlistType SinglestatType )
Each panel may be one of these types.
const MixedSource = "-- Mixed --"
Variables ¶
var DefaultHTTPClient = http.DefaultClient
DefaultHTTPClient initialized Grafana with appropriate conditions. It allows you globally redefine HTTP client.
Functions ¶
This section is empty.
Types ¶
type Board ¶
type Board struct { ID uint `json:"id"` Slug string `json:"-"` Title string `json:"title"` OriginalTitle string `json:"originalTitle"` Tags []string `json:"tags"` Style string `json:"style"` Timezone string `json:"timezone"` Editable bool `json:"editable"` HideControls bool `json:"hideControls" graf:"hide-controls"` Rows []*Row `json:"rows"` Templating struct { List []templateVar `json:"list"` } `json:"templating"` Annotations struct { List []annotation `json:"list"` } `json:"annotations"` Refresh *BoolString `json:"refresh,omitempty"` SchemaVersion uint `json:"schemaVersion"` Version uint `json:"version"` Links []link `json:"links"` Time struct { From string `json:"from"` To string `json:"to"` } `json:"time"` Timepicker struct { Now *bool `json:"now,omitempty"` RefreshIntervals []string `json:"refresh_intervals"` TimeOptions []string `json:"time_options"` } `json:"timepicker"` // contains filtered or unexported fields }
Board represents Grafana dashboard.
func NewBoard ¶
Example ¶
package main import ( "encoding/json" "fmt" "github.com/grafana-tools/sdk" ) func main() { board := sdk.NewBoard("Sample dashboard title") board.ID = 1 row1 := board.AddRow("Sample row title") row1.Add(sdk.NewGraph("Sample graph")) graphWithDs := sdk.NewGraph("Sample graph 2") target := sdk.Target{ RefID: "A", Datasource: "Sample Source 1", Expr: "sample request 1"} graphWithDs.AddTarget(&target) row1.Add(graphWithDs) data, _ := json.MarshalIndent(board, "", " ") fmt.Printf("%s", data) }
Output: { "id": 1, "title": "Sample dashboard title", "originalTitle": "", "tags": null, "style": "dark", "timezone": "browser", "editable": true, "hideControls": false, "sharedCrosshair": false, "rows": [ { "title": "Sample row title", "showTitle": false, "collapse": false, "editable": true, "height": "250px", "panels": [ { "id": 1, "title": "Sample graph", "span": 12, "renderer": "flot", "transparent": false, "type": "graph", "error": false, "isNew": true, "editable": false, "aliasColors": null, "bars": false, "fill": 0, "legend": { "alignAsTable": false, "avg": false, "current": false, "hideEmpty": false, "hideZero": false, "max": false, "min": false, "rightSide": false, "show": false, "total": false, "values": false }, "lines": false, "linewidth": 0, "nullPointMode": "connected", "percentage": false, "pointradius": 5, "points": false, "seriesOverrides": null, "stack": false, "steppedLine": false, "timeFrom": null, "timeShift": null, "tooltip": { "shared": false, "value_type": "" }, "x-axis": true, "y-axis": true, "y_formats": null, "xaxis": { "format": "", "logBase": 0, "max": null, "min": null, "show": false }, "yaxes": null }, { "id": 2, "title": "Sample graph 2", "span": 12, "renderer": "flot", "transparent": false, "type": "graph", "error": false, "isNew": true, "editable": false, "aliasColors": null, "bars": false, "fill": 0, "legend": { "alignAsTable": false, "avg": false, "current": false, "hideEmpty": false, "hideZero": false, "max": false, "min": false, "rightSide": false, "show": false, "total": false, "values": false }, "lines": false, "linewidth": 0, "nullPointMode": "connected", "percentage": false, "pointradius": 5, "points": false, "seriesOverrides": null, "stack": false, "steppedLine": false, "targets": [ { "refId": "A", "datasource": "Sample Source 1", "expr": "sample request 1", "intervalFactor": 0, "interval": "", "step": 0, "legendFormat": "" } ], "timeFrom": null, "timeShift": null, "tooltip": { "shared": false, "value_type": "" }, "x-axis": true, "y-axis": true, "y_formats": null, "xaxis": { "format": "", "logBase": 0, "max": null, "min": null, "show": false }, "yaxes": null } ] } ], "templating": { "list": null }, "annotations": { "list": null }, "schemaVersion": 0, "version": 0, "links": null, "time": { "from": "", "to": "" }, "timepicker": { "refresh_intervals": null, "time_options": null } }
func (*Board) RemoveTags ¶
func (*Board) UpdateSlug ¶
type BoardProperties ¶
type BoardProperties struct { IsStarred bool `json:"isStarred,omitempty"` IsHome bool `json:"isHome,omitempty"` IsSnapshot bool `json:"isSnapshot,omitempty"` Type string `json:"type,omitempty"` CanSave bool `json:"canSave"` CanEdit bool `json:"canEdit"` CanStar bool `json:"canStar"` Slug string `json:"slug"` Expires time.Time `json:"expires"` Created time.Time `json:"created"` Updated time.Time `json:"updated"` UpdatedBy string `json:"updatedBy"` CreatedBy string `json:"createdBy"` Version int `json:"version"` }
BoardProperties keeps metadata of a dashboard.
type BoolString ¶
func (BoolString) MarshalJSON ¶
func (s BoolString) MarshalJSON() ([]byte, error)
func (*BoolString) UnmarshalJSON ¶
func (s *BoolString) UnmarshalJSON(raw []byte) error
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client uses Grafana REST API for interacting with Grafana server.
func (*Client) CreateDatasource ¶
func (r *Client) CreateDatasource(ds Datasource) (StatusMessage, error)
CreateDatasource creates a new datasource. It reflects POST /api/datasources API call.
func (*Client) DeleteActualOrgUser ¶
func (r *Client) DeleteActualOrgUser(uid uint) (StatusMessage, error)
DeleteActualOrgUser delete user in actual organisation. It reflects DELETE /api/org/users/:userId API call.
func (*Client) DeleteDashboard ¶
func (r *Client) DeleteDashboard(slug string) (StatusMessage, error)
DeleteDashboard deletes dashboard that selected by slug string. Grafana only can delete a dashboard in a database. File dashboards may be only loaded with HTTP API but not deteled.
func (*Client) DeleteDatasource ¶
func (r *Client) DeleteDatasource(id uint) (StatusMessage, error)
DeleteDatasource deletes an existing datasource by ID. It reflects DELETE /api/datasources/:datasourceId API call.
func (*Client) GetActualOrg ¶
GetActualOrg gets current organization. It reflects GET /api/org API call.
func (*Client) GetActualOrgUsers ¶
GetActualOrgUsers get all users within the actual organisation.
func (*Client) GetActualUser ¶
GetActualUser gets an actual user.
func (*Client) GetAllDatasources ¶
func (r *Client) GetAllDatasources() ([]Datasource, error)
GetAllDatasources loads all datasources. It reflects GET /api/datasources API call.
func (*Client) GetAllUsers ¶
GetAllUsers gets all users.
func (*Client) GetDashboard ¶
func (r *Client) GetDashboard(slug string) (Board, BoardProperties, error)
GetDashboard loads a dashboard from Grafana instance along with metadata for a dashboard. For dashboards from a filesystem set "file/" prefix for slug. By default dashboards from a database assumed. Database dashboards may have "db/" prefix or may have not, it will be appended automatically.
func (*Client) GetDatasource ¶
func (r *Client) GetDatasource(id uint) (Datasource, error)
GetDatasource gets an datasource by ID. It reflects GET /api/datasources/:datasourceId API call.
func (*Client) GetDatasourceTypes ¶
func (r *Client) GetDatasourceTypes() (map[string]DatasourceType, error)
GetDatasourceTypes gets all available plugins for the datasources. It reflects GET /api/datasources/plugins API call.
func (*Client) GetRawDashboard ¶
func (r *Client) GetRawDashboard(slug string) ([]byte, BoardProperties, error)
GetRawDashboard loads a dashboard JSON from Grafana instance along with metadata for a dashboard. Contrary to GetDashboard() it not unpack loaded JSON to Board structure. Instead it returns it as byte slice. It guarantee that data of dashboard returned untouched by conversion with Board so no matter how properly fields from a current version of Grafana mapped to our Board fields. It useful for backuping purposes when you want a dashboard exactly with same data as it exported by Grafana.
For dashboards from a filesystem set "file/" prefix for slug. By default dashboards from a database assumed. Database dashboards may have "db/" prefix or may have not, it will be appended automatically.
func (*Client) SearchDashboards ¶
SearchDashboards search dashboards by substring of their title. It allows restrict the result set with only starred dashboards and only for tags (logical OR applied to multiple tags).
func (*Client) SetDashboard ¶
SetDashboard updates existing dashboard or creates a new one. Set dasboard ID to nil to create a new dashboard. Set overwrite to true if you want to overwrite existing dashboard with newer version or with same dashboard title. Grafana only can create or update a dashboard in a database. File dashboards may be only loaded with HTTP API but not created or updated.
func (*Client) SetRawDashboard ¶
SetRawDashboard updates existing dashboard or creates a new one. Contrary to SetDashboard() it accepts raw JSON instead of Board structure. Grafana only can create or update a dashboard in a database. File dashboards may be only loaded with HTTP API but not created or updated.
func (*Client) UpdateActualOrg ¶
func (r *Client) UpdateActualOrg(org Org) (StatusMessage, error)
UpdateActualOrg updates current organization. It reflects PUT /api/org API call.
func (*Client) UpdateDatasource ¶
func (r *Client) UpdateDatasource(ds Datasource) (StatusMessage, error)
UpdateDatasource updates a datasource from data passed in argument. It reflects PUT /api/datasources/:datasourceId API call.
type CustomPanel ¶
type CustomPanel map[string]interface{}
type DashlistPanel ¶
type Datasource ¶
type Datasource struct { ID uint `json:"id"` OrgID uint `json:"orgId"` Name string `json:"name"` Type string `json:"type"` Access string `json:"access"` // direct or proxy URL string `json:"url"` Password *string `json:"password,omitempty"` User *string `json:"user,omitempty"` Database *string `json:"database,omitempty"` BasicAuth *bool `json:"basicAuth,omitempty"` BasicAuthUser *string `json:"basicAuthUser,omitempty"` BasicAuthPassword *string `json:"basicAuthPassword,omitempty"` IsDefault bool `json:"isDefault"` JSONData interface{} `json:"jsonData"` }
Datasource as described in the doc http://docs.grafana.org/reference/http_api/#get-all-datasources
type DatasourceType ¶
type DatasourceType struct { Metrics bool `json:"metrics"` Module string `json:"module"` Name string `json:"name"` Partials struct { Query string `json:"query"` } `json:"datasource"` PluginType string `json:"pluginType"` ServiceName string `json:"serviceName"` Type string `json:"type"` }
Datasource type as described in http://docs.grafana.org/reference/http_api/#available-data-source-types
type FoundBoard ¶
type FoundBoard struct { ID uint `json:"id"` Title string `json:"title"` URI string `json:"uri"` Type string `json:"type"` Tags []string `json:"tags"` IsStarred bool `json:"isStarred"` }
FoundBoard keeps result of search with metadata of a dashboard.
type GraphPanel ¶
type GraphPanel struct { AliasColors interface{} `json:"aliasColors"` // XXX Bars bool `json:"bars"` Fill int `json:"fill"` // Grid grid `json:"grid"` obsoleted in 4.1 by xaxis and yaxis Legend struct { AlignAsTable bool `json:"alignAsTable"` Avg bool `json:"avg"` Current bool `json:"current"` HideEmpty bool `json:"hideEmpty"` HideZero bool `json:"hideZero"` Max bool `json:"max"` Min bool `json:"min"` RightSide bool `json:"rightSide"` Show bool `json:"show"` Total bool `json:"total"` Values bool `json:"values"` SideWidth *uint `json:"sideWidth,omitempty"` } `json:"legend,omitempty"` LeftYAxisLabel *string `json:"leftYAxisLabel,omitempty"` RightYAxisLabel *string `json:"rightYAxisLabel,omitempty"` Lines bool `json:"lines"` Linewidth uint `json:"linewidth"` NullPointMode string `json:"nullPointMode"` Percentage bool `json:"percentage"` Pointradius int `json:"pointradius"` Points bool `json:"points"` SeriesOverrides []serieOverride `json:"seriesOverrides"` Stack bool `json:"stack"` SteppedLine bool `json:"steppedLine"` Targets []Target `json:"targets,omitempty"` TimeFrom *string `json:"timeFrom"` TimeShift *string `json:"timeShift"` Tooltip struct { Shared bool `json:"shared"` ValueType string `json:"value_type"` MsResolution bool `json:"msResolution,omitempty"` // was added in Grafana 3.x } `json:"tooltip"` XAxis bool `json:"x-axis"` YAxis bool `json:"y-axis"` YFormats []string `json:"y_formats"` Xaxis yaxis `json:"xaxis"` // was added in Grafana 4.x? Yaxes []yaxis `json:"yaxes"` // was added in Grafana 4.x? Decimals *uint `json:"decimals,omitempty"` }
type IntString ¶
IntString represents special type for json values that could be strings or ints: 100 or "100"
func NewIntString ¶
func (*IntString) MarshalJSON ¶
MarshalJSON implements custom marshalling for IntString type
func (*IntString) UnmarshalJSON ¶
UnmarshalJSON implements custom unmarshalling for IntString type
type Panel ¶
type Panel struct { // Should be initialized only one type of panels. // OfType field defines which of types below will be used. *GraphPanel *TablePanel *TextPanel *SinglestatPanel *DashlistPanel *PluginlistPanel *CustomPanel // contains filtered or unexported fields }
Panel represents panels of different types defined in Grafana.
func NewDashlist ¶
NewDashlist initializes panel with a dashlist panel.
func NewPluginlist ¶
NewPluginlist initializes panel with a singlestat panel.
func NewSinglestat ¶
NewSinglestat initializes panel with a singlestat panel.
func (*Panel) AddTarget ¶
AddTarget adds a new target as defined in the argument but with refId letter incremented. Value of refID from the argument will be used only if no target with such value already exists.
func (*Panel) GetTargets ¶
GetTargets is iterate over all panel targets. It just returns nil if no targets defined for panel of concrete type.
func (*Panel) MarshalJSON ¶
func (*Panel) RepeatDatasourcesForEachTarget ¶
MapDatasources on all existing targets for the panel.
func (*Panel) RepeatTargetsForDatasources ¶
RepeatTargetsForDatasources repeats all existing targets for a panel for all provided in the argument datasources. Existing datasources of targets are ignored.
func (*Panel) ResetTargets ¶
func (p *Panel) ResetTargets()
ResetTargets delete all targets defined for a panel.
func (*Panel) SetTarget ¶
SetTarget updates a target if target with such refId exists or creates a new one.
func (*Panel) UnmarshalJSON ¶
type PluginlistPanel ¶
type PluginlistPanel struct {
Limit int `json:"limit,omitempty"`
}
type Row ¶
type Row struct { Title string `json:"title"` ShowTitle bool `json:"showTitle"` Collapse bool `json:"collapse"` Editable bool `json:"editable"` Height height `json:"height"` Panels []Panel `json:"panels"` // contains filtered or unexported fields }
Row represents single row of Grafana dashboard.
func (*Row) AddCustom ¶
func (r *Row) AddCustom(data *CustomPanel)
func (*Row) AddDashlist ¶
func (r *Row) AddDashlist(data *DashlistPanel)
func (*Row) AddGraph ¶
func (r *Row) AddGraph(data *GraphPanel)
func (*Row) AddSinglestat ¶
func (r *Row) AddSinglestat(data *SinglestatPanel)
func (*Row) AddTable ¶
func (r *Row) AddTable(data *TablePanel)
type SinglestatPanel ¶
type SinglestatPanel struct { Colors []string `json:"colors"` ColorValue bool `json:"colorValue"` ColorBackground bool `json:"colorBackground"` Decimals int `json:"decimals"` Format string `json:"format"` MaxDataPoints *int `json:"maxDataPoints,omitempty"` NullPointMode string `json:"nullPointMode"` Postfix *string `json:"postfix,omitempty"` Prefix *string `json:"prefix,omitempty"` PostfixFontSize *string `json:"postfixFontSize,omitempty"` PrefixFontSize *string `json:"prefixFontSize,omitempty"` SparkLine struct { FillColor *string `json:"fillColor,omitempty"` Full bool `json:"full,omitempty"` LineColor *string `json:"lineColor,omitempty"` Show bool `json:"show,omitempty"` } `json:"sparkline,omitempty"` ValueFontSize string `json:"valueFontSize"` ValueMaps []valueMap `json:"valueMaps"` ValueName string `json:"valueName"` Targets []Target `json:"targets,omitempty"` Thresholds string `json:"thresholds"` Gauge struct { MaxValue int `json:"maxValue"` MinValue int `json:"minValue"` Show bool `json:"show"` ThresholdLabels bool `json:"thresholdLabels"` ThresholdMarkers bool `json:"thresholdMarkers"` } `json:"gauge,omitempty"` }
type StatusMessage ¶
type StatusMessage struct { ID *uint `json:"id"` Message *string `json:"message"` Slug *string `json:"slug"` Version *int `json:"version"` Status *string `json:"resp"` }
StatusMessage reflects status message as it returned by Grafana REST API.
type TablePanel ¶
type TablePanel struct { Columns []column `json:"columns"` Sort *struct { Col uint `json:"col"` Desc bool `json:"desc"` } `json:"sort,omitempty"` Styles []columnStyle `json:"styles"` Transform string `json:"transform"` Targets []Target `json:"targets,omitempty"` Scroll bool `json:"scroll"` // from grafana 3.x }
type Target ¶
type Target struct { RefID string `json:"refId"` Datasource string `json:"datasource"` // For Prometheus Expr string `json:"expr"` IntervalFactor int `json:"intervalFactor"` Interval string `json:"interval"` Step int `json:"step"` LegendFormat string `json:"legendFormat"` // For Elasticsearch DsType *string `json:"dsType,omitempty"` Metrics []struct { ID string `json:"id"` Field string `json:"field"` Type string `json:"type"` } `json:"metrics,omitempty"` Query string `json:"query,omitempty"` TimeField string `json:"timeField,omitempty"` BucketAggs []struct { ID string `json:"id"` Field string `json:"field"` Type string `json:"type"` Settings struct { Interval string `json:"interval"` MinDocCount int `json:"min_doc_count"` } `json:"settings"` } `json:"bucketAggs,omitempty"` }
for an any panel
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
cmd
|
|
backup-dashboards
This is a simple example of usage of Grafana client for copying dashboards and saving them to a disk.
|
This is a simple example of usage of Grafana client for copying dashboards and saving them to a disk. |
backup-datasources
This is a simple example of usage of Grafana client for copying dashboards and saving them to a disk.
|
This is a simple example of usage of Grafana client for copying dashboards and saving them to a disk. |
import-dashboards
This is a simple example of usage of Grafana client for importing dashboards from a bunch of JSON files (current dir used).
|
This is a simple example of usage of Grafana client for importing dashboards from a bunch of JSON files (current dir used). |
import-dashboards-raw
This is a simple example of usage of Grafana sdk for importing dashboards from a bunch of JSON files (current dir used).
|
This is a simple example of usage of Grafana sdk for importing dashboards from a bunch of JSON files (current dir used). |
import-datasources
This is a simple example of usage of Grafana client for importing datasources from a bunch of JSON files (current dir used).
|
This is a simple example of usage of Grafana client for importing datasources from a bunch of JSON files (current dir used). |