- Time Series
- 11. Sep
Graphite is an enterprise-ready monitoring tool that runs equally well on cheap hardware or Cloud infrastructure. Teams use Graphite to track the performance of their websites, applications, business services, and networked servers. It marked the start of a new generation of monitoring tools, making it easier than ever to store, retrieve, share, and visualize time-series data.
Graphite was originally designed and written by Chris Davis at Orbitz in 2006 as side project that ultimately grew to be their foundational monitoring tool. In 2008, Orbitz allowed Graphite to be released under the open source Apache 2.0 license. Numerous large companies have deployed Graphite to production where it helps them to monitor their production e-commerce services and plan for growth.
What Graphite is and is not:
- Graphite does two things:
- Store numeric time-series data
Graphite is not a collection agent, but it offers the simplest path for getting your measurements into a time-series database. Feeding your metrics into Graphite couldn't be any easier. Need a collection agent or language bindings? Graphite has one of the largest ecosystems of data integrations and third-party tools.
Who should use Graphite?
Anybody who would want to track values of anything over time. If you have a number that could potentially change over time, and you might want to represent the value over time on a graph, then Graphite can probably meet your needs.
Specifically, Graphite is designed to handle numeric time-series data. For example, Graphite would be good at graphing stock prices because they are numbers that change over time. Whether it’s a few data points, or dozens of performance metrics from thousands of servers, then Graphite is for you. As a bonus, you don’t necessarily know the names of those things in advance. You simply send a metric name, a timestamp, and a value, and Graphite takes care of the rest!
How scalable is Graphite?
From a CPU perspective, Graphite scales horizontally on both the frontend and the backend, meaning you can simply add more machines to the mix to get more throughput. It is also fault tolerant in the sense that losing a backend machine will cause a minimal amount of data loss (whatever that machine had cached in memory) and will not disrupt the system if you have sufficient capacity remaining to handle the load.
What is Graphite written in?