Graphite-dashgen automates the creation of Graphite dashboards. It creates per-host or per-group dashboards based on YAML configuration files. The per-host host dashboards are designed to create dashboards on existing collectd metrics. Unlike most of the alternatives below, this project seeks to use existing Graphite 0.9.9+ code.
# Graphite Maintenance # Delete stale Graphite data 0 22 * * * find /opt/graphite/storage/log/ -type f -mtime +180 -delete 0 22 * * * find /opt/graphite/storage/whisper/collectd/ -type f -mtime +90 -delete 0 22 * * * find /opt/graphite/storage/whisper/statsd/ -type f -mtime +90 -delete # Delete empty directories 0 23 * * * find /opt/graphite/storage/log/ -type d -empty -delete 0 23 * * * find /opt/graphite/storage/whisper/collectd/ -type d -empty -delete 0 23 * * * find /opt/graphite/storage/whisper/statsd/ -type d -empty -delete # Regenerate all dashboards @daily /usr/bin/python -m dashgen -q -f /usr/local/etc/dashgen/dashconf.yml -f /usr/local/etc/dashgen/all_*.yml -H '*'
The crontab example above:
- Cleans-up old graphite logs
- Cleans-up old whisper databases
- Regenerates per-host dashboards using the following configuration files
- dashconf.yml: base configuration values
- all_dash.yml: per-host dashboard configuration (HOST_all dashboards)
- all_graphs.yml: per-host graph defintions for collectd metrics
See additional example configures in examples/.
- YAML Configuration Files
- Target entries are as close to web GUI as possible to make it easier to go back and forth
- Dashboard Types
- Per-Host
- Per-Group
- Per-Host Graphs
- Types
- Host Metrics: identified by
glob_verify
and may containglob_metrics
- Carbon Metrics: identified by
carbon_match
and host
- Host Metrics: identified by
- The combination of
glob_metrics
andglob_verify
should result in a single filesystem glob match
- Types
- String Templates
- Named substitutions draw from
target_vars
. Graph definitions that contain named substitutions not intarget_vars
are skipped. - Common
target_vars
include:${color_combined}
${color_free}
${host}
${metric}
${metric_resolved}
- Named substitutions draw from
- Graphite Graph Tips and Tricks
- Lines drawn by graphite obscure the lines drawn before them. Z order is important. Consequently, many of the graphs' metrics change color depending on their values.
- For graphs that feature a free metric (ex. memory), that free metric is
always green (green should not be included in the template's
lineColor
) - If you get your metrics from collectd, they are overly verbose and poorly organized for Graphite globbing. For an example rewrite-rules.conf see:
- Graphite 0.9.9+
- PyYAML (Ubuntu package: python-yaml)
- More documentation!
- Use templates with different
colorList
to easily differentiate graphs - (?) should graphs be sorted by parent instead of children (ex. all disk
vda
graphs before anyvdb
graphs)
There are many alternatives and many of them were created before Graphite included a dashboard view. One of the most exciting projects is:
For additional alternatives see the lastest Graphite Tools documentation: