Graphite (software)

Open-source time-series metrics monitoring and graphing tool From Wikipedia, the free encyclopedia

Graphite is an open-source monitoring tool that stores numeric time series data and renders graphs on demand. It was developed at Orbitz Worldwide by Chris Davis and released as open-source software in 2008.[1] Graphite does not collect metrics itself; it receives data pushed from collection agents such as collectd, StatsD, or Telegraf, stores it in its Whisper database, and provides a web-based API for querying and rendering graphs.[3]

DevelopersChris Davis (original); community
Initial release2008; 18 years ago (2008)[1]
Written inPython[2]
Quick facts Developers, Initial release ...
Graphite
DevelopersChris Davis (original); community
Initial release2008; 18 years ago (2008)[1]
Written inPython[2]
Operating systemLinux, macOS
TypeTime series database, monitoring
LicenseApache 2.0
Websitegraphite.readthedocs.io
Repositorygithub.com/graphite-project/graphite-web
Close

Graphite is used in production by companies including Ford Motor Company, Booking.com, GitHub, Etsy, The Washington Post, and Electronic Arts.[3] It influenced the design of later monitoring systems; Grafana was originally built as a dashboard frontend for Graphite, and Prometheus adopted a similar metrics naming convention.[3]

Architecture

Graphite consists of three components:[3][4]

Carbon

Carbon is a set of daemons written in Python using the Twisted networking framework. Carbon listens for incoming metrics data on TCP or UDP sockets (by default on port 2003 using a plaintext protocol, or port 2004 using a pickle protocol). It buffers data points in memory and flushes them to Whisper database files on disk. In high-volume environments, multiple Carbon relay and cache processes can be run to distribute load across servers.[3]

Whisper

Whisper is a fixed-size database file format for time-series data, similar in concept to RRDtool's round-robin archives. Each Whisper file stores a single metric at multiple retention levels (for example, one-minute resolution for 24 hours and one-hour resolution for one year). When a data point arrives, Whisper writes it to all applicable archives. Unlike RRDtool, which uses weighted interpolation when multiple data points fall within the same interval, Whisper uses a "last value wins" approach, overwriting any prior value in the same time slot.[5]

Because Whisper files are fixed-size (allocated at creation), storage requirements are predictable and the database does not grow over time. However, schema changes require recreating files, and random I/O patterns from many small files can strain disk performance in large installations.[3]

Graphite web application

The web application, built on Django, provides an HTTP API for querying metrics and rendering graphs. It supports a function-based query language for transforming and combining time-series data (averaging, summing, applying moving averages, calculating derivatives, and similar operations). Graphs can be rendered as PNG images using the Cairo library, or as JSON data for consumption by external dashboards such as Grafana.[3]

Alternatives and successors

Several time-series storage systems have been developed as alternatives to Graphite's Whisper backend:

  • Cyanite and carbon-c-relay -- drop-in Carbon replacements for higher throughput.
  • InfluxDB -- a purpose-built time series database that can receive Graphite-format metrics.
  • Prometheus -- a pull-based monitoring system with its own storage engine and query language (PromQL).
  • Grafana Mimir -- a horizontally scalable, Prometheus-compatible metrics backend developed by Grafana Labs.

Grafana largely replaced Graphite's built-in web dashboard as the preferred visualization layer, while still supporting Graphite as a data source.[3]

See also

References

Related Articles

Wikiwand AI