graphite teknikdag
Post on 15-Jan-2015
678 Views
Preview:
DESCRIPTION
TRANSCRIPT
Graphite
Johan 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● Skalbart● URL API● Dumt namn
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
Översikt
Carbon
● Agent på serversidan● Kö för lagring i Whisper● lyssnar på tcp/2003
Få in data till Carbon
Format:"metric_path value timestamp \n"
foo.bar.baz 7 1359633139
$ echo "foo.bar.baz 7 $(date +%s)" | nc graphite 2003
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
Whisper
● Fix-storlek datastorage● Liknar RRD (fast bättre)● Tillåter uppdateringar i "oordning"● Kräver inte fördeklarerade datastores
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
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
Graphite-web - UI
Graphite-web - CLI
Graphite URL API
● Graphites webapp exponerar ett URL-API på http://graphite/render
● Parametrar anges som /render/?param=value¶m2=value2
● Output i form av png, json, csv, raw, svg●
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=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
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 graphite
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
StatsD - exempel
import statsd
timer = 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
tillsammans med ES och kibana● Innehåller grok för att filtrera ut och
organisera data ur loggar● Output för graphite
...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.
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?
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
Dashboards
Eftersom graphites inbyggda dashboard inte är en ordentlig dashboard finns ett antal externa projekt...
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, collectd och logster:
https://github.com/KrisBuytaert/vagrant-graphite
Mer information
● http://graphite.wikidot.com/● https://launchpad.net/graphite● http://graphite.readthedocs.org/en/0.9.10/● http://codeascraft.etsy.com/
top related