Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Graphite: Scalable Real-time Graphing

Graphite: Scalable Real-time Graphing

Quick overview of Graphite and how to find out more information. Presented at San Diego DevOps in September 2013

Sander van Zoest

September 18, 2013
Tweet

More Decks by Sander van Zoest

Other Decks in Technology

Transcript

  1. •  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?
  2. •  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
  3. •  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
  4. •  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
  5. •  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
  6. •  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
  7. •  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
  8. •  Plain Text <metric path> <metric value> <metric timestamp> 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
  9. •  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
  10. 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
  11. 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