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

13aed91054f38766a8ccf8f6cc7c1756?s=128

Sander van Zoest

September 18, 2013
Tweet

Transcript

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

  2. •  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?
  3. •  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
  4. •  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
  5. •  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
  6. •  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
  7. •  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
  8. •  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
  9. •  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
  10. •  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
  11. •  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
  12. 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
  13. 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