Table of Contents
This article will give an overview of the native Graphite dashboard and how Grafana is different from the native Graphite Dashboard. This post will first focus on Graphite's Dashboard UI, and then branch out into a comparison of Grafana with Graphite Dashboard UI, highlighting the best features of both platforms.
What is Graphite?
Graphite is an open-source software used for monitoring and graphing numeric time-series data in real-time. Time-series data is received through Carbon daemons and is recorded in the Whisper database. Graph rendering happens on-demand through the Graphite web app that was built in Django. If you want to learn more about Graphite, check out our article on architecture and concepts, or Graphite installation and setup.
Also, check out the MetricFire free trial, where you can send metrics and try out the dashboards for yourself. You can apply what you learned and make dashboards directly in the platform.
Getting the most out of Graphite
Graphite Dashboard UI
Graphite's Dashboard creation UI is set up directly in the Graphite web app. Each Dashboard can consist of more than one graph. You can choose metrics that you want to graph in the completer on top of the Graphite composer, or you can display metrics in a tree structure, and select them there.
The Graphite Dashboard UI has the following features:
Operations on metrics - allows you to transform metric series using predefined functions.
A metric series is a set of data points. One metric element can have one or more metric series. Graphite comes with predefined operations that can morph these metric elements by performing operations on the data.
Graph customization - allows you to adjust the graph
How everything is rendered within a graph can be specified within the Render Options menu, which is visible with a single click over any graph. Graphite has some functions that only work on a graph, and not on a single metric element. Here are some major features available for Graph rendering:
- Display options are for setting up fonts, colors, showing or hiding axes, applying a template, etc.
- Line Mode sets how a line in a graph is rendered (slope, staircase).
- You can specify time zone and date/time format for X-axis.
- Y-axis metrics can be any data mapped with respect to time, hence there are more functions to manipulate how these are displayed. I.e. setting up labels, minimum/maximum values, unit systems, number of minor lines which appear, setting the side the axis is shown on, etc.
Miscellaneous Operations - allows you to do more interesting operations such as cloning graphs, emailing, and rendering graphs from a URL
Operations like Breakout, for example, creates one graph per metric. After rendering these, the original graph is removed. Other operations available are cloning, emailing and rendering a graph from a URL.
Graph Resizing - changes the appearance on the dashboard
Graphs can be resized by entering their horizontal and vertical dimensions in pixels or selecting a preset size from Graphs -> Resize menu.
Events - keep track of changes
This is used to mark events that could affect metrics directly in the graph, such as when a feature is released. This is a lesser-known feature of Graphite. Setting up events can be done through Graphite's JSON API, or through the GUI.
No Login Requirement - not easy to share
In order to use Graphite Dashboard UI, only a local setup is required. Graphs and dashboards can be shared easily, but it makes collaboration difficult as shared accounts are not available on vanilla Graphite.
Alerting Implemented Through Seyren and Cabot
Seyren is a dashboard for Graphite with its core written in Java. Its focus is only on alerting. It is configurable directly through a variety of environment variables and provides a simple interface for setting up alerts. The most remarkable thing about Seyren is its support for a dozen Alert channels. Seyren has some exclusive alerts, like its integration with Hubot and IRC. It takes data directly from locally hosted Graphite upon specifying what port Graphite is running on. However, it is a rather old tool and is no longer maintained.
Cabot is another alerting tool for Graphite, developed by Arachnys. It is capable of providing alerts through emails, SMS, and calls.
Grafana - A comparison with Graphite visualization
Grafana is a full-fledged visualization tool compatible with various data sources. You can read about it in more detail in our blog article about Grafana Dashboards. When using Grafana with Graphite, Grafana works as an interface for creating Dashboards and editing graphs. Grafana is feature-rich and built to set up dashboards easily and effectively.
Here are things that Grafana does better than the native Graphite dashboard UI:
Rich Visual Customization
Graphite web app renders graphs using its Render API, and although that is powerful, there is more potential for custom data visualizations in Grafana.
In Grafana, metric visualization isn't limited to graphs. Grafana has over 20+ ways to display data visually. Any customization applied to a graph or a dashboard is quickly rendered on the web front-end.
It is a lot more work to customize a graph in Graphite dashboard UI. Navigating through multiple drop-downs to find a feature is time-consuming. Grafana keeps everything on the same level, and all major setups like setting axes or looking out for minimum and maximum metric values can be done through simple toggle buttons.
Working with Metrics
Alongside extensive graph customization, Grafana offers a different way to set up metrics for a graph. Grafana has a feature called Graphite Query editor, which allows for quicker metric selection from drop-downs. Functions and their parameters can be quickly modified in this space.
Setting up Annotations
Annotations are Grafana's equivalent of Graphite Events, they are just a lot easier to set up. Tags and descriptions form an annotation. They can be pulled into Grafana from pre-existing Graphite Events or set up by clicking on a data point on a graph and entering the required metadata. Some add-ons automatically create certain annotations when an action occurs.
Alerts are not supported in Graphite dashboard UI without using extensions, making this a critical benefit of using Grafana.
Alerting exists to communicate unusual metric changes through notification channels. These channels usually exist in real-time communication clients or incident management platforms. Alert rules are available for set up right through graph panels in a Grafana dashboard. Notifications are generated and sent out only when certain alert rules are triggered.
Grafana can send a PNG image of the graph panel at the time an alert is triggered. It primarily supports Slack, Pagerduty, VictorOps, email, and webhooks as notification streams.
Navigation and Organization
Grafana has several keyboard shortcuts to go around things. For example, zooming in on a graph can be easily done by clicking and dragging a selection rectangle. Dashboards can be organized within folders and playlists. Folders have custom access permissions and playlists are useful for dashboard presentation.
However, Graphite dashboard UI does accomplish some remarkable things in comparison:
Without any additional setups, to quickly display data on a graph, Graphite dashboard UI is better.
Lots of Extensions
Graphite has been around as an open-source tool since 2008, and that shows in plenty of other integration built to work with it. There are 80+ functional tools that either extend Graphite or use it as a data source.
Hosted Graphite by MetricFire
MetricFire is a collection of services that work together to help you collect, store and visualize metric data from any source. MetricFire brings together the power of Grafana and Graphite on a common web platform. MetricFire's Hosted Graphite provides the following features:
- Quick flexibility between Graphite composer, Graphite dashboard UI and Grafana
- Local Grafana integration
- More features over Vanilla Graphite
- Team account support, where users can be given limited or unrestricted access
- Ready-made Dashboards
- Cluster native storage
- tagging and annotations on metrics
- Easy transition into using Hosted Prometheus
Even more to power Graphite
Graphite has been around for a decade, and there are many tools that work well with it and focus on different aspects of the time-series data which is pulled in. Here are a few more visualization tools that work well with Graphite:
A real-time dashboard and graphing toolkit built using D3.js and Backbone.js. Graphene is capable of displaying thousands of data points in real-time. It was built with a focus on Graphite as a data source.
Graphsky is a dashboard tool for Graphite built using PHP. It uses JSON files to build graphs. The simple UI here puts all the focus on graphs, giving control even over which graphs are displayed and when they are displayed.
A dashboard app for organizing, analyzing, benchmarking, and reporting results of performance tests run over metrics stored in Graphite.
Tasseo is a lightweight, real-time dashboard that can be used with Graphite and other time-series databases.
TimeSeriesWidget can be used to add time-series graphs to an app/website. It's a plugin to make highly interactive graphs with easy options to toggle between visible and invisible components on a graph.
Graphite provides an easy way to get time-series data into a database, and Grafana takes Graphite visualization two steps further by introducing features that work well with the established Graphite metric format. MetricFire goes beyond by allowing us to use both the Graphite dashboard UI and Grafana with just the typical out-of-the-box installation.