Kibana vs Grafana

I've worked with a number of clients to help them exploit the vast amount of data at their disposable, allowing them to make informed decisions and give them the ability to proactively monitor everything important to them.  A common tool I suggest is Grafana, a open source metric analytics & visualisation suite, suitable for visualising time series data for infrastructure and application data.  A question clients that I have worked with have historically asked me is why do I recommend using Grafana when they already have a visualisation tool, such as Kibana, hence this blog, Grafana or Kibana.

Here's what each product have to say about their product:

"Grafana is an open source metric analytics & visualisation suite. It is most commonly used for visualising time series data for infrastructure and application analytics but many use it in other domains including industrial sensors, home automation, weather, and process control."

"Kibana is an open source data visualisation platform for Elasticsearch. It provides visualisation capabilities on top of the content indexed on an Elasticsearch cluster.  Users can create bar, line and scatter plots, or pie charts and maps on top of large volumes of data."

Back to the question at hand, Grafana or Kibana?  

Data Types

Kibana focuses on log analytics whereas Grafana is more suited to time series metrics such as CPU and I/O utilisation.  Both tools quite clearly have a different forte so you're likely to sacrifice functionality and data visibility by limiting yourself to one of these tools.

Data Sources

Grafana has a whole host of compatible storage backends including, Graphite, CloudWatch, InfluxDB, Prometheus, Elasticsearch etc.  On the other hand, Kibana only integrates with Elasticsearch.  This is not necessarily a limitation with Kibana as the product offers extensive functionality when it comes to log analytics above and beyond Grafana however, having the ability to pull together stats from multiple datasources within a single view clearly has its merits.  

Log Analysis

Kibana acts as the presentation layer on top of Elasticsearch, indexing will be catered for by Elasticsearch but Kibana offers the user the ability to search and explore their log data in many forms of visualisation.  Grafana currently does not allow for data searching and exploration.  Aggregation of log data maybe suitable for a time-series backend storage but with all forms of aggregation, you'll lose data so Kibana (within ELK) offers the best solution for log analysis.

Custom Functions

Although this is probably more of a positive for Graphite (one of Grafana's preferred storage backends), the tool provides the ability to customise your own functions with a couple of lines of python and neatly hooks into Grafana's user interface.  There is also an extensive range of functions already packaged with Graphite which are fully compatible with Grafana.  At the time of writing this, custom functions are not possible in Kibana.    

User Access

Within Grafana you can create multiple organisations within the same install, and give differing levels of access to different sets of dashboards.  Dy default, Kibana doesn't offer this level of granularity with user access; instead you'll need to purchase Shield.

Conclusion

So to answer to the question, Grafana or Kibana is simple - Grafana and Kibana.  In my opinion, both tools compliment each other and you'd only be sacrificing visibility and functionality by restricting yourself to one.

Let me know what you think, do you use Kibana or Grafana?  What other tools do you use as part of your monitoring suite?

Thanks for reading,

Kieran