GraphiteJohan Gunnarsson @ Inits teknikdagjohan.gunnarsson@init.se / se.linkedin.com/in/jgunnarsson / @j_gunnarsson
Vad är graphite?●   Användargenererade grafer●   Behöver ingen förkonfigurering av nya källor●   Grafer i (nästan) realtid...
Nödvändigheter● Ursprungligen utvecklat av Chris Davis på  Orbitz.com, första versionen 2006● Skrivet i Python, webappen i...
Översikt
Carbon● Agent på serversidan● Kö för lagring i Whisper● lyssnar på tcp/2003
Få in data till CarbonFormat:"metric_path value timestamp n"foo.bar.baz 7 1359633139$ echo "foo.bar.baz 7 $(date +%s)" | n...
Få in data till carbon - exempel#!/bin/bashidgmoln=$(curl --silent www.idg.se | grep --count --ignore-case moln)echo "webc...
Whisper●   Fix-storlek datastorage●   Liknar RRD (fast bättre)●   Tillåter uppdateringar i "oordning"●   Kräver inte förde...
Whisper - databasdefinition$ cat storage-schemas.conf# Schema definitions for Whisper files. Entries are scanned in order,...
Graphite-web●   Django●   PyCairo för rendering av grafer●   Inte riktigt en dashboard●   Använd mest för att prototypa gr...
Graphite-web - UI
Graphite-web - CLI
Graphite URL API● Graphites webapp exponerar ett URL-API på  http://graphite/render● Parametrar anges som /render/?  param...
Graphite - URL API exempelhttp://graphite/render/?width=586&height=308&target=webcount.idg.moln
Graphite URL API - mer exempel# average load across web machines over last 12 hourshttp://graphite/render?target=averageSe...
Plugins och verktyg för Graphite
CollectD● Samlar in system metrics● God tillgång på externa plugins för  mätvärden● Flera olika plugins för output till gr...
StatsD - github.com/etsy/statsd/●   Aggregator som körs på noden●   UDP in (fire and forget), TCP ut●   Flushar ut aggrege...
StatsD - exempelimport statsdtimer = statsd.Timer(MyApplication)timer.start()# spännande kodtimer.stop(SomeTimer)
JMXTrans - github.com/jmxtrans/jmxtrans● Verktyg för monitorering av JVM
Logstashhttp://logstash.net/● Verktyg för att hantera loggar och events● Används normalt som ersättare till splunk  tillsa...
...och många fler● Graphios  - verktyg som skickar nagiosmetrics● Logster  - Hantering av loggfiler, ungeför som  logstash...
Användningsfall CD 1/2(lånat från: http://codeascraft.etsy.com/2010/12/08/track-every-release/)Grafa antal errors över tid...
Användningsfall CD 2/2(lånat från: http://codeascraft.etsy.com/2010/12/08/track-every-release/)Lägg in events.deploy.websi...
DashboardsEftersom graphites inbyggda dashboard inte ären ordentlig dashboard finns ett antal externaprojekt...
Dashboards - Team dashboardgithub.com/fdietz/team_dashboard
Dashboards - Tasseogithub.com/obfuscurity/tasseo
Dashboards - Graphenehttps://github.com/jondot/graphene
Dashboards - dashinghttp://shopify.github.com/dashing/
Prova själv!Vagrant up!Färdig maskin med graphite, jmxtrans, collectdoch logster:https://github.com/KrisBuytaert/vagrant-g...
Mer information●   http://graphite.wikidot.com/●   https://launchpad.net/graphite●   http://graphite.readthedocs.org/en/0....
Upcoming SlideShare
Loading in …5
×

Graphite teknikdag

904 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
904
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Graphite teknikdag

  1. 1. GraphiteJohan Gunnarsson @ Inits teknikdagjohan.gunnarsson@init.se / se.linkedin.com/in/jgunnarsson / @j_gunnarsson
  2. 2. Vad är graphite?● Användargenererade grafer● Behöver ingen förkonfigurering av nya källor● Grafer i (nästan) realtid● Skalbart● URL API● Dumt namn
  3. 3. Nödvändigheter● Ursprungligen utvecklat av Chris Davis på Orbitz.com, första versionen 2006● Skrivet i Python, webappen i django med EXTjs för javascript GUI● Licens: Apache 2.0
  4. 4. Översikt
  5. 5. Carbon● Agent på serversidan● Kö för lagring i Whisper● lyssnar på tcp/2003
  6. 6. Få in data till CarbonFormat:"metric_path value timestamp n"foo.bar.baz 7 1359633139$ echo "foo.bar.baz 7 $(date +%s)" | ncgraphite 2003
  7. 7. Få in data till carbon - exempel#!/bin/bashidgmoln=$(curl --silent www.idg.se | grep --count --ignore-case moln)echo "webcount.idg.moln "$idgmoln" "$(date +%s) | nc graphite 2003
  8. 8. Whisper● Fix-storlek datastorage● Liknar RRD (fast bättre)● Tillåter uppdateringar i "oordning"● Kräver inte fördeklarerade datastores
  9. 9. Whisper - databasdefinition$ cat storage-schemas.conf# Schema definitions for Whisper files. Entries are scanned in order,# and first match wins. This file is scanned for changes every 60 seconds.## [name]# pattern = regex# retentions = timePerPoint:timeToStore, timePerPoint:timeToStore, ...[everything_1min_13months]priority = 100pattern = .*retentions = 1m:395d
  10. 10. Graphite-web● Django● PyCairo för rendering av grafer● Inte riktigt en dashboard● Använd mest för att prototypa grafer● Enkelt CLI● URL API
  11. 11. Graphite-web - UI
  12. 12. Graphite-web - CLI
  13. 13. Graphite URL API● Graphites webapp exponerar ett URL-API på http://graphite/render● Parametrar anges som /render/? param=value&param2=value2● Output i form av png, json, csv, raw, svg●
  14. 14. Graphite - URL API exempelhttp://graphite/render/?width=586&height=308&target=webcount.idg.moln
  15. 15. Graphite URL API - mer exempel# average load across web machines over last 12 hourshttp://graphite/render?target=averageSeries(server.web*.load)&from=-12hours# number of registered users over past day as raw json datahttp://graphite/render?target=app.numUsers&format=json# rate of new signups per minutehttp://graphite/render?target=summarize(deriviative(app.numUsers),"1min")&title=New_Users_Per_Minute
  16. 16. Plugins och verktyg för Graphite
  17. 17. CollectD● Samlar in system metrics● God tillgång på externa plugins för mätvärden● Flera olika plugins för output till graphite
  18. 18. StatsD - github.com/etsy/statsd/● Aggregator som körs på noden● UDP in (fire and forget), TCP ut● Flushar ut aggregerat data till graphite● Bindings till dom flesta språk
  19. 19. StatsD - exempelimport statsdtimer = statsd.Timer(MyApplication)timer.start()# spännande kodtimer.stop(SomeTimer)
  20. 20. JMXTrans - github.com/jmxtrans/jmxtrans● Verktyg för monitorering av JVM
  21. 21. Logstashhttp://logstash.net/● Verktyg för att hantera loggar och events● Används normalt som ersättare till splunk tillsammans med ES och kibana● Innehåller grok för att filtrera ut och organisera data ur loggar● Output för graphite
  22. 22. ...och många fler● Graphios - verktyg som skickar nagiosmetrics● Logster - Hantering av loggfiler, ungeför som logstash● Ganglia - Distribuerat system för metrics, ursprungligen för HPC. Har graphite-output.● Diamond - Samlar in system-metrics, skrivet i python.
  23. 23. Användningsfall CD 1/2(lånat från: http://codeascraft.etsy.com/2010/12/08/track-every-release/)Grafa antal errors över tid. Men vad hände?
  24. 24. Användningsfall CD 2/2(lånat från: http://codeascraft.etsy.com/2010/12/08/track-every-release/)Lägg in events.deploy.website 1 $(date +%s)i ditt deployverktyg och använd drawAsInfinite
  25. 25. DashboardsEftersom graphites inbyggda dashboard inte ären ordentlig dashboard finns ett antal externaprojekt...
  26. 26. Dashboards - Team dashboardgithub.com/fdietz/team_dashboard
  27. 27. Dashboards - Tasseogithub.com/obfuscurity/tasseo
  28. 28. Dashboards - Graphenehttps://github.com/jondot/graphene
  29. 29. Dashboards - dashinghttp://shopify.github.com/dashing/
  30. 30. Prova själv!Vagrant up!Färdig maskin med graphite, jmxtrans, collectdoch logster:https://github.com/KrisBuytaert/vagrant-graphite
  31. 31. Mer information● http://graphite.wikidot.com/● https://launchpad.net/graphite● http://graphite.readthedocs.org/en/0.9.10/● http://codeascraft.etsy.com/

×