Graphite - PHP Conference AR

Post on 23-Jun-2015

480 views 2 download

Transcript of Graphite - PHP Conference AR

medime que me gusta- graphite -

PHP Conference ARmartin@properati.com

@runixo

rasmusnosotros

Que hace Graphite

● Guarda métricas en el tiempo● Permite

○ filtrarlas○ procesarlas○ graficarlas

De donde sale Graphite

● Sideproject de Chris Davis en Orbitz● Opensourceado en 2008● Python + Twisted● Github

Quienes lo usan

Orbitz, Etsy, Google, Vimeo, Properati y Sumavisos ;)

Porque me interesa, a mí

● Mi trabajo => problemas raros● Fácil de implementar● Experimentos rápidos● Da herramientas para tomar decisiones● poco esfuerzo => buenos resultados

Porque me interesa darles esta charla

● *tiene sentido*● fácilmente accionable● poco esfuerzo => muchos resultados

Que hace Graphite (de nuevo)

● Guarda métricas en el tiempo○ contadores○ timers○ gauges

■ s. calibre, espesor; manómetro, barómetro, indicador, medidor; calibrador, gage, graduador, gramil; pluviómetro; distancia entre dos ejes, entrerriel, entrevía

● Permite extraerlas, filtrarlas, procesarlas y graficarlas

Una métrica en el tiempo

web.exceptions 2013/10/1 7:50:10 0

web.exceptions 2013/10/1 7:50:20 0

web.exceptions 2013/10/1 7:50:30 15

web.requests 2013/10/1 7:50:10 50

web.requests 2013/10/1 7:50:20 53

web.requests 2013/10/1 7:50:30 42

Tipos de métricas

● Contadores○ Cuantos X hubo en tal periodo de tiempo?

■ requests■ suscripciones■ logins

● Timers○ Cuanto tardó Z?

■ una búsqueda en resolverse■ un caché en responder

● Gauges○ Cuanto mide Y?

■ pedidos encolados● Eventos

Como se usa - meter datos

post "/contact" do

# hacer algo

G.increment("properati.contact.form_completed")

end

O, alternativamente,

echo "local.random.diceroll 4 `date +%s`" | nc 127.0.0.1 2003

Como se usa - sacar datos

● Dashboard○ Graficos (feuchos pero utiles)

● URL API○ Gráficos○ JSON○ CSV

2 métricas para una período

2 métricas mergeadas

Performance de la DB

Tiempo gastado cada 10/sec

Funciones

● summarize● sum● avg● product● ratio

● integral● derivate● holtWintersForecast

● asPercent● stacked● “tipo munin”

Performance de la DB

Tiempo gastado cada 10/sec

Tiempo gastado sumarizado cada 10/min

Performance por componente

Un request = MySQL + Sphinx + Redis + Ruby

Distribucion por datacenter

Por Status de HTTP

Salud + Deploys

Parcial, diario e histórico

Cantidad de resultados por búsqueda

Mails enviados vs Horario apertura

Dashboards!

URL APIGET http://tools.sumavisos.xstrat.us/render?width=400&from=-1weeks&until=-&height=250&target=alias(summarize(sumSeries(stats_counts.properati.parsers.*.*.deleter.property.sources.*.deleted)%2C'1d')%2C%22borrados%22)&title=borrados&hideLegend=true&areaMode=stacked&lineMode=staircase

image/png

URL API - JSONGET http://tools.sumavisos.xstrat.us/render?width=400&from=-1weeks&until=-&height=250&target=alias(summarize(sumSeries(stats_counts.properati.parsers.*.*.deleter.property.sources.*.deleted)%2C'1d')%2C%22borrados%22)&title=borrados&hideLegend=true&areaMode=stacked&lineMode=staircase

&format=json

text/javascript

[{"target": "borrados", "datapoints": [[327.0, 1380067200], [803.0, 1380153600], [528.0, 1380240000], [1244.0, 1380326400], [460.0, 1380412800], [224.0, 1380499200], [21.0, 1380585600], [194.0, 1380672000]]}]

Alertas

HoltWintersForecast

El stack es complicado

● Graphite○ carbon○ whisper○ webapp

● Statsd○ Escucha UDP○ Agrupa cada 10s ○ Le pasa a Graphite

Pero hay unos howtos cut&paste&godhelpme

Graphite!

Martin Sarsale@runixomartin@properati.com

Graphite vive aca