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.
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
- Grafana support
- Nagios/Icinga support
- Statsd protocol support
- Collectd plugin support
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.
|Query interface||REST API||REST API||HTTP||TCP||None|
|Alerting||No (roadmap)||Yes||With Kapacitor||No||No|
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.
Gnocchi vs OpenTSDB¶
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.