Graphite-ish
Graphite project consists of three components that designed to work together:
carbondaemon that accepts and stores metricswhisperdatabase where metrics are keptwebapp 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)
So what?
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.
Included images
| 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 |
Building
Make sure Docker and Docker Compose are installed.
$ make graphite fast
Re-building
$ make graphite fast again
Starting
$ make run
Using
- Open
Grafanadashboard athttp://[docker-host]:3000/, sign in asadmin/admin - Create new data source of type
Graphitethat points tohttp://graphite-api:8000 - Create a new chart with a test metric (
test.pingin this example) - Start sending metrics to
StatsD-compatible endpoint - Metrics should show up on
Grafanadashboard
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
Description
Languages
Dockerfile
95.1%
Makefile
4.9%