Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LSPE Meetup talk on Graphite

Slides from my LSPE Meetup talk from June 16, 2011 entitled Enterprise Realtime Graphing with Graphite.

  • Login to see the comments

LSPE Meetup talk on Graphite

  1. 1. Realtime Enterprise Graphing and Visualization with Graphite Dave Mangot tech.mangot.com www.tagged.com
  2. 2. Graphite Overview <ul><li>Not monitoring, graphing!
  3. 3. Complex graph creation Web / Dashboard, “CLI” and API interfaces
  4. 4. http://graphite.wikidot.com/
  5. 5. http://graphite.readthedocs.org/
  6. 6. https://launchpad.net/graphite </li></ul>
  7. 7. Oooh...
  8. 8. Ahhh...
  9. 9. What Graphite Provides <ul><li>EASY to get data into visualization tool from any source
  10. 10. Zooming on arbitrary time periods
  11. 11. Ability to create ad-hoc graphs from ANY metric
  12. 12. Metric Storage
  13. 13. LDAP, Memcached integration </li></ul>
  14. 14. Graphite Pros <ul><li>Horizontally scalable
  15. 15. Rapid graph prototyping (CLI)
  16. 16. Graph disparate data points
  17. 17. Numerous formulas available (derive, transform, average, sum, etc... )
  18. 18. Share graphs with other users
  19. 19. Supports existing RRD databases
  20. 20. Empower any user to create their own graphs, no advance configuration required </li></ul>
  21. 21. Graphite Cons <ul><li>Not a dashboard
  22. 22. No hover details
  23. 23. No collector
  24. 24. Unfortunate name </li></ul>
  25. 25. Graphite Components
  26. 26. Demo Time!
  27. 27. Push vs. Pull/Poll
  28. 28. Getting data into Graphite <ul><li>Java: </li></ul>Socket socket = new Socket( &quot;graphite01&quot; , 2003 ); PrintStream printStream = new PrintStream(socket.getOutputStream()); printStream.println(&quot;tagged.sitemon.active_users&quot; + country + &quot; &quot; + count + &quot; &quot; + (int) (System.currentTimeMillis() / 1000)); <ul><li>Perl: </li></ul>sub graphite_submit { my $path = shift; my $values = shift; # hash ref of values by name my $time = shift; $time = time() unless defined($time); my ($host, $port) = qw(localhost 2003); my $sock = IO::Socket::INET->new( PeerAddr => $host, PeerPort => $port, Proto => 'tcp', ); die &quot;Could not connect to $host:$port : $!n&quot; unless defined($sock); foreach my $key (keys %$values) { print $sock &quot;$path.$key $values->{$key} $timen&quot;; } } <ul><li>Shell! $echo tagged.sample.data.point1 31337 `date +%s` | nc -w 3 graphite01 2003 </li></ul>
  29. 29. Coming Attractions <ul><li>Ceres – replaces Whisper
  30. 30. Dashboard – give targeted view of the data
  31. 31. Interactive Graphs (flot?)
  32. 32. API improvements
  33. 33. Multiple Y axes </li></ul>
  34. 34. Cool things folks are doing with Graphite ESNet: <ul><li>Written by John Dugan
  35. 35. Takes data from EsxSNMP and NetAlmanac
  36. 36. Integrates with Internal Java tool for event correlation </li></ul>JMXtrans: (http://code.google.com/p/jmxtrans/) <ul><li>Written by Jon Stevens
  37. 37. writers for Graphite (recommended), cacti/rrdtool and stdout </li></ul>
  38. 38. Cool things folks are doing with Graphite Esty Statsd: <ul><li>https://github.com/etsy/statsd
  39. 39. Inspired by Flickr project
  40. 40. “A network daemon for aggregating statistics, rolling them up, then sending them to graphite.”
  41. 41. Implemented in Node.js
  42. 42. Can do counting, timing, sampling
  43. 43. Flushes to Graphite on interval </li></ul>
  44. 44. Cool things folks are doing with Graphite Rocksteady: <ul><li>http://code.google.com/p/rocksteady/
  45. 45. Graphite can consume AMQP
  46. 46. Integrates with Esper (http://esper.codehaus.org/) </li></ul>
  47. 47. Special Thanks Chris Davis Jason Dixon Corey Hickey Yaakov Nemoy Gary Larsen

×