Graphite - PHP Conference AR

30
medime que me gusta - graphite - PHP Conference AR [email protected] @runixo

Transcript of Graphite - PHP Conference AR

Page 1: Graphite - PHP Conference AR

medime que me gusta- graphite -

PHP Conference [email protected]

@runixo

Page 2: Graphite - PHP Conference AR

rasmusnosotros

Page 3: Graphite - PHP Conference AR

Que hace Graphite

● Guarda métricas en el tiempo● Permite

○ filtrarlas○ procesarlas○ graficarlas

Page 4: Graphite - PHP Conference AR

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 ;)

Page 5: Graphite - PHP Conference AR

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

Page 6: Graphite - PHP Conference AR

Porque me interesa darles esta charla

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

Page 7: Graphite - PHP Conference AR

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

Page 8: Graphite - PHP Conference AR

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

Page 9: Graphite - PHP Conference AR

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

Page 10: Graphite - PHP Conference AR

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

Page 11: Graphite - PHP Conference AR

Como se usa - sacar datos

● Dashboard○ Graficos (feuchos pero utiles)

● URL API○ Gráficos○ JSON○ CSV

Page 12: Graphite - PHP Conference AR

2 métricas para una período

Page 13: Graphite - PHP Conference AR

2 métricas mergeadas

Page 14: Graphite - PHP Conference AR

Performance de la DB

Tiempo gastado cada 10/sec

Funciones

● summarize● sum● avg● product● ratio

● integral● derivate● holtWintersForecast

● asPercent● stacked● “tipo munin”

Page 15: Graphite - PHP Conference AR

Performance de la DB

Tiempo gastado cada 10/sec

Tiempo gastado sumarizado cada 10/min

Page 16: Graphite - PHP Conference AR

Performance por componente

Un request = MySQL + Sphinx + Redis + Ruby

Page 17: Graphite - PHP Conference AR

Distribucion por datacenter

Page 18: Graphite - PHP Conference AR

Por Status de HTTP

Page 19: Graphite - PHP Conference AR

Salud + Deploys

Page 20: Graphite - PHP Conference AR

Parcial, diario e histórico

Page 21: Graphite - PHP Conference AR

Cantidad de resultados por búsqueda

Page 22: Graphite - PHP Conference AR

Mails enviados vs Horario apertura

Page 23: Graphite - PHP Conference AR

Dashboards!

Page 24: Graphite - PHP Conference AR

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

Page 25: Graphite - PHP Conference AR

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]]}]

Page 27: Graphite - PHP Conference AR

Alertas

Page 28: Graphite - PHP Conference AR

HoltWintersForecast

Page 29: Graphite - PHP Conference AR

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

Page 30: Graphite - PHP Conference AR

Graphite!

Martin Sarsale@[email protected]

Graphite vive aca