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_verifyand may containglob_metrics - Carbon Metrics: identified by
carbon_matchand host
- Host Metrics: identified by
- The combination of
glob_metricsandglob_verifyshould result in a single filesystem glob match
- Types
- String Templates
- Named substitutions draw from
target_vars. Graph definitions that contain named substitutions not intarget_varsare skipped. - Common
target_varsinclude:${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
colorListto easily differentiate graphs - (?) should graphs be sorted by parent instead of children (ex. all disk
vdagraphs before anyvdbgraphs)
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: