Graphite
By Chris Davis and contributors
Graphite is an open-source monitoring tool for storing numeric time-series data and rendering it as graphs, combining a specialized storage engine called Whisper with a web application for querying and visualizing metrics. It accepts data…
Definition
Graphite is an open-source monitoring tool for storing numeric time-series data and rendering it as graphs, combining a specialized storage engine called Whisper with a web application for querying and visualizing metrics. It accepts data pushed to it in a simple plaintext or pickle protocol, making it a common backend for agents like StatsD and collectd, and it defines a widely copied functional query language for transforming stored series into charts.
Overview
Before dimensional, pull-based systems like Prometheus became common, teams needed a straightforward way to store large volumes of time-stamped numeric data and turn it into graphs without operating a general-purpose database. Graphite filled that role by pairing a purpose-built, fixed-size storage format with a rendering engine that could apply functions like summing, averaging, or scaling series on the fly when a graph was requested, rather than precomputing every possible view of the data. Mechanically, Graphite is composed of several components: a listener called Carbon that receives incoming metrics over its plaintext or pickle protocol, a storage backend called Whisper that writes each metric to a fixed-size, round-robin-style file on disk with configurable retention policies, and a web application, graphite-web, that serves a rendering API and a query language for composing functions over stored series. A client sends a metric as a dotted name, a value, and a timestamp; Carbon writes it into the appropriate Whisper file, and later a dashboard requests a rendered graph by specifying a metric pattern and a chain of transformation functions. Graphite differs from Prometheus and other pull-based, dimensional systems in two key ways: it is push-based, relying on agents like StatsD or collectd to send data to it, and its metric names are flat, dot-delimited strings rather than metrics with attached key-value labels, which makes some forms of aggregation and filtering more cumbersome at scale. It predates the label-based dimensional model that later systems adopted, and its Whisper storage format, while efficient, requires pre-allocating fixed retention policies per metric rather than supporting arbitrary cardinality dynamically. In practice, Graphite has long served as the storage and rendering backend behind dashboards built in Grafana, and it remains embedded in infrastructure that adopted it before Prometheus became the default choice for cloud-native metrics. Many organizations running StatsD-based instrumentation still write to Graphite because the two tools were designed to work together. Its main limitations are the operational overhead of managing many Whisper files at scale, since each metric requires its own file with fixed disk allocation, the lack of native support for high-cardinality labeled metrics, and a smaller ecosystem of modern integrations compared to Prometheus. Teams starting a new metrics stack today more commonly choose a pull-based, dimensional system, though Graphite remains a stable, well-understood option where existing tooling already depends on it. Migrating away from Graphite is nontrivial precisely because its flat metric-naming convention often gets encoded into years of dashboards and alerting rules, so many organizations instead run Graphite alongside a newer system during a gradual transition rather than cutting over in one step.
Key Features
- Stores time-series data in the fixed-size Whisper file format
- Carbon component listens for metrics via plaintext or pickle protocol
- Functional query language transforms series at render time
- graphite-web serves a rendering API consumed by dashboards
- Push-based model commonly paired with StatsD or collectd
- Flat, dot-delimited metric naming rather than labeled dimensions
- Configurable per-metric retention and aggregation policies
- Long-standing backend choice for Grafana dashboards