Warning: This document is for the development version of Gnocchi. The main version is stable/4.1.

Gnocchi – Metric as a Service

Gnocchi is an open-source time series database.

The problem that Gnocchi solves is the storage and indexing of time series data and resources at a large scale. This is useful in modern cloud platforms which are not only huge but also are dynamic and potentially multi-tenant. Gnocchi takes all of that into account.

Gnocchi has been designed to handle large amounts of aggregates being stored while being performant, scalable and fault-tolerant. While doing this, the goal was to be sure to not build any hard dependency on any complex storage system.

Gnocchi takes a unique approach to time series storage: rather than storing raw data points, it aggregates them before storing them. This built-in feature is different from most other time series databases, which usually support this mechanism as an option and compute aggregation (average, minimum, etc.) at query time.

Because Gnocchi computes all the aggregations at ingestion, getting the data back is extremely fast, as it just needs to read back the pre-computed results.

You can read the full documentation online at http://gnocchi.xyz.

Key Features

Gnocchi’s main features are:

  • HTTP REST interface
  • Horizontal scalability
  • Metric aggregation
  • Measures batching support
  • Archiving policy
  • Metric value search
  • Structured resources
  • Resource history
  • Queryable resource indexer
  • Multi-tenant
  • Grafana support
  • Nagios/Icinga support
  • Statsd protocol support
  • Collectd plugin support

Community

You can join Gnocchi’s community via the following channels:

Comparisons To Alternatives

The following table summarises feature comparison between different existing open source time series database. More details are written below, if needed.

Features Gnocchi Prometheus InfluxDB OpenTSDB Graphite
Metric polling No Yes No No No
Resource history Yes No No No No
Multi-tenant Yes No No No No
Query interface REST API REST API HTTP TCP None
High-available Yes No With Relay Yes No
Scalable Yes No Commercial only Yes No
Alerting No (roadmap) Yes With Kapacitor No No
Grafana support Yes Yes Yes Yes Yes
collectd support Yes Yes Yes Yes Yes

Gnocchi vs Prometheus

Prometheus is a full-featured solution that includes everything from polling the metrics to storing and archiving them. It offers advanced features such as alerting.

In comparison, Gnocchi does not offer polling as it prefers to leverage existing solutions (e.g. collectd). However, it provides high-availability and horizontal scalablity as well as multi-tenancy.

Gnocchi vs InfluxDB

InfluxDB is a time series database storing metrics into local files. It offers a variety of input protocol support and created its own query language, InfluxQL, inspired from SQL. The HTTP API it offers is just a way to pass InfluxQL over the wire. Horizontal scalability is only provided in the commercial version. The data model is based on time series with labels associated to it.

In comparison, Gnocchi offers scalability and multi-tenancy. Its data model differs as it does not provide labels, but resources to attach to metrics.

Gnocchi vs OpenTSDB

OpenTSDB is a distributed time series database that uses Hadoop and HBase to store its data. That makes it easy to scale horizontally. However, its querying feature are rather simple.

In comparison, Gnocchi offers a proper query language with more features. The usage of Hadoop might be a show-stopper for many as it’s quite heavy to deploy and operate.

Gnocchi vs Graphite

Graphite is essentially a data metric storage composed of flat files (Whisper), and focuses on rendering those time series. Each time series stored is composed of points that are stored regularly and are related to the current date and time.

In comparison, Gnocchi offers much more scalability, a better file format and no relativity to the current time and date.