# Graphite (software)

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Graphite_(software)
> Markdown URL: https://mediated.wiki/source/Graphite_(software).md
> Source: https://en.wikipedia.org/wiki/Graphite_(software)
> Source revision: 1357227590
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{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](/source/Python_(programming_language))<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](/source/Linux), [macOS](/source/macOS)
| genre                  = [Time series database](/source/Time_series_database), monitoring
| license                = [Apache 2.0](/source/Apache_License)
| website                = {{URL|https://graphite.readthedocs.io/}}
}}

'''Graphite''' is an open-source monitoring tool that stores numeric [time series](/source/time_series) data and renders graphs on demand. It was developed at [Orbitz Worldwide](/source/Orbitz) 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](/source/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](/source/Ford_Motor_Company), [Booking.com](/source/Booking.com), [GitHub](/source/GitHub), [Etsy](/source/Etsy), [The Washington Post](/source/The_Washington_Post), and [Electronic Arts](/source/Electronic_Arts).<ref name="oreilly" /> It influenced the design of later monitoring systems; [Grafana](/source/Grafana) was originally built as a dashboard frontend for Graphite, and [Prometheus](/source/Prometheus_(software)) 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](/source/Daemon_(computing)) written in Python using the [Twisted](/source/Twisted_(software)) 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](/source/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](/source/Django_(web_framework)), 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](/source/Portable_Network_Graphics) images using the [Cairo](/source/Cairo_(graphics)) library, or as JSON data for consumption by external dashboards such as [Grafana](/source/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](/source/time_series_database) that can receive Graphite-format metrics.
* '''[Prometheus](/source/Prometheus_(software))''' -- 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](/source/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](/source/Grafana)
* [Prometheus](/source/Prometheus_(software))
* [RRDtool](/source/RRDtool)
* [MRTG](/source/MRTG)
* [Time series database](/source/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

---
Adapted from the Wikipedia article [Graphite (software)](https://en.wikipedia.org/wiki/Graphite_(software)) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Graphite_(software)?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
