Dashboard Dude

You've got enough data. It's time to get a dashboard.

Dashboards for Graphite

It’s no secret I like Graphite - it’s a great example of Open Source software which is just as good (actually, it’s even better) than similar closed-source, enterprise-grade (and much more expensive) software.

While Graphite is fantastic, the front-end that comes with it leaves a little bit to be desired. You can use the built-in rendering and dashboard for viewing your system metrics, just like you can use Internet Explorer 6 to browse the Internet - it’ll work, but you’re gonna have a bad time.

Thankfully, there are a lot of alternatives out there, but the Graphite Tools page is a little out of date (with abandoned/incomplete projects), so here’s a list or dashboards I have or would consider using…

Client-side Dashboards

These dashboards use the Graphite Render API to get data, and show them using some of the latest client-side Javascript libraries (like D3.js) to render graphs.

These dashboards usually perform noticeably better than the built-in renderer, because it shifts the rendering work to your browser, rather than the server (which is already working to retrieve the metrics from disk, etc).

Giraffe

A Rickshaw-based (which is built on d3.js) dashboard with a nice interface for toggling metrics and changing the time period being shown on the fly.

While I haven’t used it personally, it looks good. My only concern is the performance, as even the small demo is a bit slow.

Cubism.js

This is a great dashboard for fitting a large number of metrics on one screen. The horizon graph is suited to comparing many similar metrics, and the default colour scheme is really easy on the eyes, without loosing detail.

While the current values are displayed, you’ll need to mouse-over the previous updates which may not suit some dashboards.

Graphene

A good general-purpose replacement for your Graphite dashboards. As you can see on its demo page, it has widgets for gauges and counters, if you’re using StatsD’s extra features.

It has a nice auto-discovery feature, which can convert your existing Graphite dashboards to their Graphene equivalent quickly, but I find the dark/high contrast/high intensity colour scheme tough to look at for long periods of time (but that can be changed with some extra CSS styling).

Tasseo

Another Rickshaw-based front-end, it’s a very light-weight dashboard for viewing many different metrics (ie. they don’t have to be on the same scale) at once.

It Can be easily configured to change colour when certain thresholds are breached, which makes it nice as a high-level dashboard. It’s not suited for long-term metric monitoring, as there are no y-axes drawn which can make working out historical values a bit hard.

This is a dashboard by Jason Dixon, who also does the Descartes dashboard (see below).

Database-backed Dashboards

These databases have more features than the client-side dashboards, but require more set up and configuration to get running. Most reduce the load on your Graphite server by caching often-used data (eg. by using Redis).

Graphiti

A Redis-backed dashboard replacement which uses JSON to configure graphs. It uses Redis as a metric and settings cache, and it has the ability to store snapshots of your graphs on Amazon’s S3. One thing to note is that it deliberately doesn’t do authentication - it makes the (not unreasonable) assumption that your Graphite data and dashboards are not on a public network.

Descartes

Definitely the most comprehensive replacement for Graphite’s built-in dashboard so far, which isn’t really surprising given it’s by Jason Dixon (see below). It depends on Redis and PostreSQL, which also puts it at the top of the requirements list.

It has the ability to set templates for graphs, and uses sparklines to give you a high-level overview of your metrics and help you decide what you want to include in your dashboard, which is always useful.

Authentication of users can be done with Goolge OpenID or Github, and comes with great instructions on how to deploy to Heroku, which will help you get up and running quickly.

While I haven’t had a chance to use Descartes myself, I would trust anything that Jason Dixon puts out - he is one of the Graphite Project maintainers and did the Tasseo dashboard (see above), so you know he knows his stuff. His blog is full of useful Graphite tips.

Other Dashboards

While not specifically Graphite dashboards, the following get an honourable mention:

GDash

This dashboard is not client-side (it uses Graphite’s internal renderer for images) or database backed, so it’s more of a “skin” on the default dashboard. It lets you configure your dashboards using YAML, and is built on the Twitter Bootstrap web-framework.

Graph Explorer

While this isn’t a dashboard (like the others in this list), it’s a new take on metric exploration for Graphite. Made to be very interactive, it can definitely help you decide what metrics to include in your dashboard. The nice thing is that he graphs created are interactive, which is a big improvement over the usual metric explorer built-in to Graphite.

Dashing

A general-purpose dashboard by the boffins at Shopify, Dashing can accept data from many different sources, and display many different types of data through various widgets. This includes being able to display Graphite data through direct calls to the Render URL API (you’ll have to roll them yourself), and display them using their Rickshaw graph widget.

I’m a big fan or Dashing for non-technical dashboards because it can accept so many types/sources of data, and looks great out of the box. They also have a gauge widget which works really nicely with the StatsD’s gauge metrics. The have a great demo of the various widgets in action.

Need Help?

There you have it! Let me your personal experiences and recommendations with these dashboards, or if I missed any you think are worthwhile in the comments below.

If you need any help setting up any of these dashboards, or Graphite itself, check out my dashboard consulting services and get in touch with me.

Comments