Graphite project consists of three components that designed to work together:
carbon
daemon that accepts and stores metricswhisper
database where metrics are keptweb
app that reads metrics and processes them using a comprehensive list of supported functions
Every component exposes several APIs that are used by other components. All of them are written in Python.
Two more components are often used together with Graphite
:
- StatsD — a Node.js app that accepts metrics
and aggregates them before submitting to
carbon
; - Grafana — web dashboard for
Graphite
(and other backends)
This set of images replaces original carbon
daemon and StatsD
aggregation
daemon with other compatible components to improve
performance and
throughput.
Grafana 3 is also included.
Component | Version | |
---|---|---|
go-carbon | v0.7.2 |
Drop-in replacement for original carbon daemon, written in Go |
Brubeck | 5d139a4 |
Easy replacement for StatsD , written in C |
Graphite API | latest |
A piece of original Graphite Web component with less features |
Grafana | v3.1.0-beta1 |
Beautiful dashboard for all of that |
Make sure Docker and Docker Compose are installed.
$ make graphite fast
$ make graphite fast again
$ make run
- Open
Grafana
dashboard athttp://[docker-host]:3000/
, sign in asadmin
/admin
- Create new data source of type
Graphite
that points tohttp://graphite-api:8000
- Create a new chart with a test metric (
test.ping
in this example) - Start sending metrics to
StatsD
-compatible endpoint - Metrics should show up on
Grafana
dashboard
You can send metrics right from terminal:
# 1000 times
# Send "test.ping:1|C\n"
# Verbose, Using UDP, Timeout 1s
# To StatsD port on Docker
$ for i in {1..1000}; do echo "test.ping:1|C" | nc -v -u -w1 `docker-machine ip` 8126; done
Data is kept in /data/graphite/whisper
directory on the host machine.