Graphite real-time graphing system
Graphite is a highly scalable real-time graphing system written entirely in Python. Graphite stores numeric time-series data and displays them as real-time graphs. Though there are a lot of systems with the same functionality, Graphite is distinguished among them since it functions as a network service that is both easy to use and highly scalable.
Graphite requires the following software:
- Python2.4 or greater;
- pycairo (with PNG backend support);
- a WSGI server and web server: e.g. Apache with mod_wsgi and mod_python, or gunicorn with nginx - uWSGI with nginx;
- Django 1.0 or greater;
- Twisted 8.0 or greater (10.0+ recommended);
- zope-interface (often included in Twisted package dependency);
- fontconfig and at least one font package (a system package usually).
Graphite’s architecture and functionality
Graphite doesn’t collect data, but it can be easily achieved through third party tools. All Graphite’s functionality is provided by its three major components:
- Carbon - a Twisted daemon that receives time-series data;
- Whisper - a specialized database library for storing time-series numeric data;
- Graphite webapp - a Django front-end webapp that renders graphs on-demand using Cairo and provides a basic UI.
Whisper is a database library used by applications to manipulate and retrieve data stored in specially formatted files. It is similar to RRDtool and was built specifically for Graphite, although it can be exploited independently.
Carbon-cache (or Carbon) is Graphite's processing backend. This highly scalable event-driven I/O framework for Python is built on Twisted that helps to manage a big number of clients and handle a large amount of traffic with low overhead. Carbon is aimed to store data points for metrics provided by clients. Term ‘metric’ in this case refers to any measurable quantity that changes over time (e.g. number of sales of particular product or stock prices). A data point is an input format that corresponds to the measured value of a particular metric at a point in time.
When Carbon receives data points they become available for graphing in the webapp. It provides varied ways to build and display graphs, for instance, there is a simple URL API for rendering that makes it easy to embed graphs in other webpages. The final step is graph generation via Cairo and its display in a Django based web application.
Work with Graphite is easy and time-efficient, so it is usually integrated with other software that leads to powerful applications built on top of Graphite, e.g. web-based dashboards for monitoring and analysis. Among organizations that use Graphite are Vimeo, SocialTwist, Orbitz, Google (open source Rocksteady project), Canonical, and Media Temple. More information can be found on Graphite's website.
Quintagroup has experience in working with Graphite, since this system was used for aggregation and display of statistical weather data, such like temperature, pressure, humidity, etc. for New York City Weather website.
Graphite is a complex system which key features are scalability and real-time access. Contact Quintagroup if you want to receive graphing system implementation for you website or web application.