Introduction to Graphite
What is graphite
Graphite provides real-time visualization and storage of numeric time-series data
Graphite does two things:
- Graphite stores numeric time-series data.
- Graphite renders graphs of this data on demand.
Graphite consits of 3 parts
- carbon - a daemon that listens for time-series data
- whisper - a simple database library for storing time-series data
- webapp - a (Django) webapp that renders graphs on demand
Carbon
Python twisted daemons that listens for time-series data
- carbon-cache.py
- carbon-relay.py
- carbon-aggrefator.py
- megacarbon?
CARBON-CACHE.PY
- carbon-cache.py
- accepts metrics over various protocols and writes them to disk as efficiently as possible
- caches metric values in RAM as they are received
- flushes them to disk on an interval using the underlying whisper library
- carbon.conf
- [cache] section
- storage-schemas.conf
- Defines a retention policy for metrics based on regex patterns
- This policy is passed to whisper when .wsp file is pre-allocated,and dictates how long data is stored for.
carbon-replay.py
To scale out, simple run multiple carbon-cache.py instances bebind a carbon-aggregator.py or carbon-replay.py
-
For replication and sharding
- RELAY_METHOD = rules | consistent-hashing
- carbon.conf
- [replay] section (REPLAY_METHOD)
- relay-rules.conf
- REPLAY_METHOD = rules, pattern/servers tuples define what servers metrics matching certain regex rules are forwarded to
carbon-aggregator.py
Buffer and Aggregator in front of carbon-cache.py
Whisper Libary
A simple database libaray for storing time-series data (like RRD)
THE FORMAT OF TIME-SERIES DATA
<key> <numric value> <timestamp>
STORAGE SCHEMAS
Graphite matches data paths with a pattern and tells what frequency and history for our data to store
The retention format is frequency:history
[stats]
pattern = ^stats\..*
retentions = 1m:7d,15m:120d
Introduction To Graphite
By Myoungsoo Shin
Introduction To Graphite
- 1,812