{{about||the programmable Unicode-compliant smart-font technology and rendering system developed by SIL International|Graphite (SIL)}} {{short description|Open-source time-series metrics monitoring and graphing tool}} {{Use American English|date=March 2026}} {{Use mdy dates|date=March 2026}} {{Infobox software | name = Graphite | screenshot = Graphite (log monitoring software).png | caption = Graphite dashboard showing system metrics | developer = Chris Davis (original); community | released = {{Start date and age|2008}}<ref name="orbitz">{{cite web |url=https://www.cnet.com/news/orbitz-paves-the-way-to-enterprise-open-source-contributions/ |title=Orbitz paves the way to enterprise open-source contributions |last=Asay |first=Matt |publisher=CNET |date=June 27, 2008 |access-date=June 29, 2016}}</ref> | latest release version = 1.1.10 | latest release date = {{start date and age|2022|05|23|df=yes}}<ref>{{cite web |url=https://graphite.readthedocs.io/en/latest/releases/1_1_10.html |title=1.1.10 — Graphite 1.2.0 documentation |date=2022-05-23 |accessdate=2026-06-01}}</ref> | repo = {{URL|https://github.com/graphite-project/graphite-web}} | programming language = Python<ref name="gh-graphite">{{cite web |url=https://github.com/graphite-project |title=Graphite Project |publisher=GitHub |access-date=March 10, 2026}}</ref> | operating system = Linux, macOS | genre = Time series database, monitoring | license = Apache 2.0 | website = {{URL|https://graphite.readthedocs.io/}} }}

'''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.<ref name="orbitz" /> 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.<ref name="oreilly">{{cite book |last=Dixon |first=Jason |title=Monitoring with Graphite |publisher=O'Reilly Media |year=2014 |isbn=978-1-4919-1643-8}}</ref>

Graphite is used in production by companies including Ford Motor Company, Booking.com, GitHub, Etsy, The Washington Post, and Electronic Arts.<ref name="oreilly" /> 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.<ref name="oreilly" />

== Architecture == Graphite consists of three components:<ref name="oreilly" /><ref name="joshi">{{cite thesis |last=Joshi |first=Nishes |title=Interoperability in monitoring and reporting systems |type=Master's thesis |publisher=University of Oslo |year=2012 |url=http://hdl.handle.net/10852/9085 |access-date=March 10, 2026}}</ref>

=== 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.<ref name="oreilly" />

=== 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.<ref name="trubetskoy">{{cite web |url=https://grisha.org/blog/2015/05/04/recording-time-series/ |title=Recording Time Series -- Graphite vs RRDtool |last=Trubetskoy |first=Gregory |date=May 4, 2015 |access-date=March 10, 2026}}</ref>

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.<ref name="oreilly" />

=== 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.<ref name="oreilly" />

== 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.<ref name="oreilly" />

== See also == {{Portal|Free and open-source software}} * Grafana * Prometheus * RRDtool * MRTG * Time series database

== References == {{Reflist|30em}}

== External links == * [https://graphite.readthedocs.io/ Graphite documentation] * {{GitHub|graphite-project/graphite-web|Graphite}}

{{Authority control}}

Category:Time series software Category:Free software programmed in Python Category:Software using the Apache license Category:Free network management software Category:2008 software