Manage Grafana Dashboards
This module uses elasticsearch
, which can be installed via package, or pip.
You can specify elasticsearch hosts directly to the module, or you can use an elasticsearch profile via pillars:
mygrafanaprofile:
hosts:
- es1.example.com:9200
- es2.example.com:9200
index: grafana-dash
# Basic usage (uses default pillar profile key 'grafana')
Ensure myservice dashboard is managed:
grafana.dashboard_present:
- name: myservice
- dashboard_from_pillar: default
- rows_from_pillar:
- systemhealth
- requests
# Passing hosts in
Ensure myservice dashboard is managed:
grafana.dashboard_present:
- name: myservice
- dashboard_from_pillar: default
- rows:
- collapse: false
editable: true
height: 150px
title: System Health
panels:
- aliasColors: {}
id: 200000
annotate:
enable: false
bars: false
datasource: null
editable: true
error: false
fill: 7
grid:
leftMax: 100
leftMin: null
rightMax: null
rightMin: null
threshold1: 60
threshold1Color: rgb(216, 27, 27)
threshold2: null
threshold2Color: rgba(234, 112, 112, 0.22)
leftYAxisLabel: ''
legend:
avg: false
current: false
max: false
min: false
show: false
total: false
values: false
lines: true
linewidth: 1
nullPointMode: connected
percentage: false
pointradius: 5
points: false
renderer: flot
resolution: 100
scale: 1
seriesOverrides: []
span: 4
stack: false
steppedLine: false
targets:
- target: cloudwatch.aws.ec2.mysrv.cpuutilization.average
title: CPU (asg average)
tooltip:
query_as_alias: true
shared: false
value_type: cumulative
type: graph
x-axis: true
y-axis: true
y_formats:
- short
- short
zerofill: true
- rows_from_pillar:
- systemhealth
- requests
- profile:
hosts:
- es1.example.com:9200
- es2.example.com:9200
index: grafana-dash
# Using a profile from pillars
Ensure myservice dashboard is managed:
grafana.dashboard_present:
- name: myservice
- dashboard:
annotations:
enable: true
list: []
editable: true
hideAllLegends: false
hideControls: false
nav:
- collapse: false
enable: true
notice: false
now: true
refresh_intervals:
- 10s
- 30s
- 1m
- 5m
- 15m
- 30m
- 1h
- 2h
- 1d
status: Stable
time_options:
- 5m
- 15m
- 1h
- 2h
- 3h
- 4h
- 6h
- 12h
- 1d
- 2d
- 4d
- 7d
- 16d
- 30d
type: timepicker
originalTitle: dockerregistry
refresh: 1m
rows: []
sharedCrosshair: false
style: dark
tags: []
templating:
enable: true
list: []
time:
from: now-2h
to: now
timezone: browser
- rows_from_pillars:
- systemhealth
- requests
- profile: mygrafanaprofile
The behavior of this module is to create dashboards if they do not exist, to add rows if they do not exist in existing dashboards, and to update rows if they exist in dashboards. The module will not manage rows that are not defined, allowing users to manage their own custom rows.
salt.states.grafana.
dashboard_absent
(name, hosts=None, profile='grafana')¶Ensure the named grafana dashboard is deleted.
Name of the grafana dashboard.
A pillar key or dict that contains a list of hosts and an elasticsearch index to use.
salt.states.grafana.
dashboard_present
(name, dashboard=None, dashboard_from_pillar=None, rows=None, rows_from_pillar=None, profile='grafana')¶Ensure the grafana dashboard exists and is managed.
Name of the grafana dashboard.
A dict that defines a dashboard that should be managed.
A pillar key that contains a grafana dashboard dict. Mutually exclusive with dashboard.
A list of grafana rows.
A list of pillar keys that contain lists of grafana dashboard rows. Rows defined in the pillars will be appended to the rows defined in the state.
A pillar key or dict that contains a list of hosts and an elasticsearch index to use.