Slide 1

Slide 1 text

Graphite: Scalable Real-time Graphing San Diego DevOps @sddevops

Slide 2

Slide 2 text

•  Does two things: -  Store numeric time-series data -  Render graphics of this data on demand •  Consists of three things: -  Receiver Daemon - Carbon -  Disk Storage Library - Whisper -  Web Application - Graphite © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 2 What is Graphite?

Slide 3

Slide 3 text

•  Originally designed and written by Chris Davis at Orbitz in 2006 as a side project. •  In 2008, Orbitz allowed Graphite to be release under Apache 2.0 license © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 3 Graphite History

Slide 4

Slide 4 text

•  Python twisted daemons that listens for time-series data •  Carbon-cache.py Accepts metrics and caches them in RAM as they are received and flushes them to disk on an interval using the underlying whisper library •  Carbon-relay.py Replication and sharding •  Carbon-aggregator.py Buffer and Aggregator in front of Carbon-Cache.py 1.0 Release introduces Megacarbon single carbon-daemon with internal pipeline concept © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 4 Carbon Daemons

Slide 5

Slide 5 text

•  A Django webapp that renders graphs on-demand using Cairo (2D Graphics Library) •  Consists of following: -  Web CLI -  Render URL API -  Composer Interface •  Series can be manipulated with provided functions © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 5 Web Frontend

Slide 6

Slide 6 text

•  A simple database library for storing time-series data (similar in design to RRD) •  Stable •  Ceres back-end database available in 1.0 -  Replaces whisper -  Does not pre-allocate space on disk -  Only stores values and calculates timestamps for data points -  Store data points across servers © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 6 Whisper Library

Slide 7

Slide 7 text

•  Source -  http://graphite.wikidot.com/installation •  Chef -  http://community.opscode.com/cookbooks/graphite •  Fabric -  https://github.com/gingerlime/graphite-fabric •  Puppet -  https://forge.puppetlabs.com/modules?q=graphite © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 7 Installing Graphite

Slide 8

Slide 8 text

•  Federated Storage -  http://bitprophet.org/blog/2013/03/07/graphite/ •  DevOpsDays – Care and Feeding of Large Scale Graphite Installations -  http://vimeo.com/65550048 •  Graphite+Megacarbon+Ceres. Multi-node cluster setup -  http://anatolijd.blogspot.com/2013/06/graphitemegacarbonceres-multi- node.html © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 8 Scaling Graphite

Slide 9

Slide 9 text

•  Plain Text echo “some.metric 4 `date +%s`” |nc graphite.host 2003 •  Pickle [(path, (timestamp, value)), …] Payload = pickle.dumps(listOfMetricTumples) Header = struct.pack(“!L”, len(payload)) Message = header + payload •  AMQP © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 9 Getting your data into Graphite: Protocol Version

Slide 10

Slide 10 text

•  Collectd – https://collectd.org/ -  System performance statistics daemon •  Statsd – https://github.com/etsy/statsd -  Easy stats aggregation daemon •  Sensu - https://sensuapp.org/ -  Monitoring Framework •  Backstop – https://github.com/obfuscurity/backstop -  HTTP POST Service that accepts JSON, Github hooks, PagerDuty Webhooks •  Others such as Ganglia, Diamond, Rocksteady, Shinken © Copyright 2013 OneHealth Solutions, Inc. 9/18/13 10 Getting your data into Graphite: Tools version

Slide 11

Slide 11 text

•  http://graphite.readthedocs.org/en/latest/render_api.html •  http://graphite.wikidot.com/cli-reference •  http://graphite.readthedocs.org/en/latest/functions.html © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 11 Graphite Web App Reference

Slide 12

Slide 12 text

Client side •  Cubism.js - http://square.github.io/cubism/ •  Graphene – http://jondot.github.io/graphene/ •  Giraffe - https://github.com/kenhub/giraffe •  Tasseo - https://github.com/obfuscurity/tasseo Server backed •  Seyren - https://github.com/scobal/seyren •  Graphitus - https://github.com/erezmazor/graphitus •  Graphiti - https://github.com/paperlesspost/graphiti •  Descartes - https://github.com/obfuscurity/descartes For more see http://dashboarddude.com/blog/2013/01/23/dashboards-for- graphite/ © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 12 Graphite Dashboards and Visualization

Slide 13

Slide 13 text

Official •  http://graphite.wikidot.com/ •  http://graphite.rtfd.org/ Community •  http://matt.aimonetti.net/posts/2013/06/26/practical-guide-to- graphite-monitoring/ •  http://obfuscurity.com/Tags/Graphite •  https://lists.launchpad.net/graphite-dev/ Services •  https://www.hostedgraphite.com/ © Copyright 2012 OneHealth Solutions, Inc. 9/18/13 13 Graphite Resources