Graphite
A quick look at Graphite and StatsD




          Adrian Moisey

                 Yola
           Operations Engineer
All these things!
    What are they?
  Sta                         o n
     t sD                   rb
                         Ca
          ra p hene
Gr       G
                               er
   ap                   is   p
        hi t           h      Gdash
               e   W
A quick diagram:
StatsD                   Carbon   Whisper




                                  Graphite
         http://dashboard/
A quick diagram:
StatsD
StatsD

             network daemon
  listens for statistics: counters or timers


                 over UDP


aggregates them and sends them to carbon
StatsD

Python:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto("myapp.signups:1|c", ("graphite.example.com", 8125))
StatsD

Bash:
echo "myapp.signups:1|c" | nc -w 1 -u graphite.example.com 8125
StatsD
Or use something else:
Ruby - https://github.com/dawanda/statsd-client
Django - https://github.com/andymckay/django-statsd
Java - https://github.com/youdevise/java-statsd-client
PHP - https://github.com/seejohnrun/php-statsd
.net - https://github.com/ragnard/Graphite.NET

                    (I just googled for these)
A quick diagram:
StatsD        Carbon
Carbon

        network daemon
       listens for statistics


             over TCP


Stores them on disk using Whisper
A quick diagram:
StatsD        Carbon   Whisper
Whisper


         fixed size database
              RRD-like
fast and reliable store of numeric data
A quick diagram:
StatsD        Carbon   Whisper




                       Graphite
Graphite
http://graphite.yola.net/render/?
width=586&height=308&&target=diamond.net.yol
a.inet.prod.infra1.loadavg.01&target=diamond.ne
t.yola.inet.prod.infra1.loadavg.05&target=diamon
d.net.yola.inet.prod.infra1.loadavg.15


                Hard to read?
Graphite
http://graphite.yola.net/render/
width=586
height=308
target=diamond.net.yola.inet.prod.infra1.loadavg.01
target=diamond.net.yola.inet.prod.infra1.loadavg.05
target=diamond.net.yola.inet.prod.infra1.loadavg.15
Graphite
Graphite


Lets make it prettier!
Graphite
http://graphite.yola.net/render/
Width=586
Height=308
title=infra1 – load average
vtitle=load
from=-30hours
target=alias(diamond.net.yola.inet.prod.infra1.loadavg.01,”1min”)
target=alias(diamond.net.yola.inet.prod.infra1.loadavg.05,”5min”)
target=alias(diamond.net.yola.inet.prod.infra1.loadavg.15,”15min”)
Graphite
Graphite
Graphite
Graphite
movingAverage(seriesList, windowSize)
Graphite
Graphite
integral(seriesList)
Graphite
http://graphite.yola.net/render/
width=586
Height=308
target=color(drawAsInfinite(stats.deploys.qa.qa.*),”red”)
target=alpha(color(stacked(diamond.net.yola.inet.qa.memor
y.Active),”orange”)%,0.7)
Graphite
A quick diagram:
StatsD                   Carbon   Whisper




                                  Graphite
         http://dashboard/
Dashboards!
Dashboards!

Graphite