Sobre mi
@felixcarmona46
github.com/felixcarmona
linkedin.com/in/felixcarmona
Aplicación web
Aplicación web
ERROR 500
Aplicación web
Servidor
SSH
tail -f /var/log/apache2/error.log
Servidor 1
Servidor 2
Servidor 3
Servidor 4
Servidor 5
Servidor 6
Servidor 7
Servidor 1
Servidor 2
Servidor 3
Servidor 4
Servidor 5
Servidor 6
Servidor 7
Servidor 1
Servidor 2
Servidor 3
Servidor 4
Servidor 5
Servidor 6
Servidor 7
Servidor 1
Servidor 2
Servidor 3
Servidor 4
Servidor 5
Servidor 6
Servidor 7
Servidor 1
Servidor 2
Servidor 3
Servidor 4
Servidor 5
Servidor 6
Servidor 7
tail -f /var/log/apache2/error.log
Centralización de Logs
Servidor
1
Servidor
2
Servidor
3
Servidor
4
Servidor
5
Servidor
6
Servidor
7
Procesador
de Logs
Almacen
de Logs
Visualizad...
Tomando decisiones a la
hora de desarrollar
Software
Razonamiento
antes que Intuición
Razonamiento = Datos = Métricas
¿Que preguntas deberían
poder respondernos
nuestras métricas?
¿Esta mi aplicación
funcionando?
Si no lo está, ¿que parte esta fallando?
¿Que áreas necesitan
mejorar el rendimiento?
¿Necesito escalar?
¿Cual fue el impacto del
último código deployado?
¿Ha repercutido sobre los usuarios?
¿Negativamente?
¿Deberiamos hacer ro...
Tipos de métricas
Métricas de negocio (Alto nivel)
Métricas de las aplicaciones
Métricas de los sistemas (Bajo nivel)
Flujos y estrategias para
recolectar métricas
Recolectando métricas con statsd
Aplicación
Peticiones
Muestras
Agregador de
métricas
Almacén
de
métricas
Agrupación y gua...
Flush interval
1
1
1
1
1
1
1
7Statsd
Segundos que tarda en procesarse
la tarea X
4
3
6
3
3
7
2
Statsd
Segundos que tarda en procesarse
la tarea X
4
3
6
3
3
7
2
?Statsd
Segundos que tarda en procesarse
la tarea X
4
3
6
3
3
7
2
28?Statsd
Segundos que tarda en procesarse
la tarea X
4
3
6
3
3
7
2
4Statsd
Segundos que tarda en procesarse
la tarea X
4
3
6
3
3
7
2
7Statsd
Segundos que tarda en procesarse
la tarea X
4
3
6
3
3
7
2
2Statsd
Tipos de métricas soportadas por statsd
● Counters
● Timers
● Gauges
● Sets
Contador,
no confundir
con esto:
Alberto Contador
Counters
Si durante el transcurso de un flush interval,
enviamos las siguientes muestras para una
métrica determinada:
+2,...
Timers
Sirven para colectan números.
No necesariamente tienen porque ser valores
de tiempo.
Por ejemplo puedes guardar con...
Timers
Finalizado el flush interval, statsd guardara 8 valores.
Por ejemplo para las muestras 8.5, 2.3, 5, 3.1:
● La muest...
Gauges
Solo la última muestra recibida durante un flush
interval es guardada.
Por ejemplo, si durante un flush interval st...
Sets
Suma el número de muestras recibidas (no su valor, si no
la cantidad de muestras recibidas) para una métrica
determin...
Balanceando vários statsd
statsd
statsd
statsd
Almacén de
métricasBalanceador
DNS Round Robin
UDP Load Balancer (https://g...
Balanceando vários statsd
statsd
statsd
statsd
statsd Almacén de
métricas
1
3
2
6
Balanceador
DNS Round Robin
UDP Load Bal...
Recolectando métricas con collectd
Sistema
Consultas
Colector de
métricas
Almacén
de
métricas
Cada X segundos
(aka Interva...
Sistema
Recolectando métricas con collectd
+ plugin statsd (escrito en C)
Aplicación
Muestras
Colector
Agregador
collectd
...
Almacenes de métricas
15 días de retención de datos
$0,50 por metrica al mes
AWS CloudWatch
Round Robin Database
RRDtool
Image from: http://www.loriotpro.com/Products/On-line_Documentation_V5/LoriotProDoc_EN/V22-RR...
Escrito en Python
Muy similar a RRDtool (Fixed size)
Mas lento que RRDtool (Escrito en C)
Roll-up: En lugar de desechar lo...
Librato
13 meses de retención
Roll-up como whisper:
● Últimos 30 minutos: raw resolution
● Últimos 60 minutos: raw resolut...
Balanceando para Librato
statsd
statsd
statsd
LibratoBalanceador
DNS Round Robin
UDP Load Balancer (https://github.com/fel...
Visualizadores de
métricas
Visage
Image from http://hasnaas.blogspot.com.es/2013/08/gnome-opw-update-3.html
Graphite
Image from https://www.devco.net/archives/2011/10/08/gdash-graphite-dashboard.php
AWS CloudWatch
Image from http://blogs.clogeny.com/custom-metrics-in-amazon-cloudwatch/
Librato
Image from http://blog.appharbor.com/2014/02/03/librato-integration-and-perfomance-metrics
Detrás del Backend [phpDay 2015]
Detrás del Backend [phpDay 2015]
Detrás del Backend [phpDay 2015]
Detrás del Backend [phpDay 2015]
Próxima SlideShare
Cargando en…5
×

Detrás del Backend [phpDay 2015]

1.196 visualizaciones

Publicado el

Centralización de logs con Elasticsearch + Logstash + Kibana
y Recolección de métricas con statsd/collectd, con multiples storages y visualizadores de métricas

Repositorio con infraestructuras automatizadas + un symfony que se integra
https://github.com/felixcarmona/detras-del-backend
(vagrant up)

Publicado en: Datos y análisis
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
1.196
En SlideShare
0
De insertados
0
Número de insertados
210
Acciones
Compartido
0
Descargas
17
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Detrás del Backend [phpDay 2015]

  1. 1. Sobre mi @felixcarmona46 github.com/felixcarmona linkedin.com/in/felixcarmona
  2. 2. Aplicación web
  3. 3. Aplicación web
  4. 4. ERROR 500 Aplicación web
  5. 5. Servidor SSH
  6. 6. tail -f /var/log/apache2/error.log
  7. 7. Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Servidor 6 Servidor 7
  8. 8. Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Servidor 6 Servidor 7
  9. 9. Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Servidor 6 Servidor 7
  10. 10. Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Servidor 6 Servidor 7
  11. 11. Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Servidor 6 Servidor 7
  12. 12. tail -f /var/log/apache2/error.log
  13. 13. Centralización de Logs
  14. 14. Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Servidor 6 Servidor 7 Procesador de Logs Almacen de Logs Visualizador de Logs Logstash Elasticsearch Kibana rsyslog
  15. 15. Tomando decisiones a la hora de desarrollar Software
  16. 16. Razonamiento antes que Intuición Razonamiento = Datos = Métricas
  17. 17. ¿Que preguntas deberían poder respondernos nuestras métricas?
  18. 18. ¿Esta mi aplicación funcionando? Si no lo está, ¿que parte esta fallando?
  19. 19. ¿Que áreas necesitan mejorar el rendimiento?
  20. 20. ¿Necesito escalar?
  21. 21. ¿Cual fue el impacto del último código deployado? ¿Ha repercutido sobre los usuarios? ¿Negativamente? ¿Deberiamos hacer rollback?
  22. 22. Tipos de métricas
  23. 23. Métricas de negocio (Alto nivel)
  24. 24. Métricas de las aplicaciones
  25. 25. Métricas de los sistemas (Bajo nivel)
  26. 26. Flujos y estrategias para recolectar métricas
  27. 27. Recolectando métricas con statsd Aplicación Peticiones Muestras Agregador de métricas Almacén de métricas Agrupación y guardado de las métricas recibidas durante x segundos (aka flush interval) Visualizador de metricas statsd Graphite (whisper) AWS CloudWatch Librato (Storage) Graphite (web app) Librato AWS CloudWatch (web)
  28. 28. Flush interval 1 1 1 1 1 1 1 7Statsd
  29. 29. Segundos que tarda en procesarse la tarea X 4 3 6 3 3 7 2 Statsd
  30. 30. Segundos que tarda en procesarse la tarea X 4 3 6 3 3 7 2 ?Statsd
  31. 31. Segundos que tarda en procesarse la tarea X 4 3 6 3 3 7 2 28?Statsd
  32. 32. Segundos que tarda en procesarse la tarea X 4 3 6 3 3 7 2 4Statsd
  33. 33. Segundos que tarda en procesarse la tarea X 4 3 6 3 3 7 2 7Statsd
  34. 34. Segundos que tarda en procesarse la tarea X 4 3 6 3 3 7 2 2Statsd
  35. 35. Tipos de métricas soportadas por statsd ● Counters ● Timers ● Gauges ● Sets
  36. 36. Contador, no confundir con esto: Alberto Contador
  37. 37. Counters Si durante el transcurso de un flush interval, enviamos las siguientes muestras para una métrica determinada: +2, +2, +4, -1. Statsd los sumará y guardará simplemente un valor 7.
  38. 38. Timers Sirven para colectan números. No necesariamente tienen porque ser valores de tiempo. Por ejemplo puedes guardar con ellos, el número de bytes leídos, el número de objetos en un almacén o cualquier cosa que sea un número.
  39. 39. Timers Finalizado el flush interval, statsd guardara 8 valores. Por ejemplo para las muestras 8.5, 2.3, 5, 3.1: ● La muestra mínima recibida (2.3) ● La muestra máxima recibida (8.5) ○ + percentil 90 ● La suma de todas las muestras recibidas (18.9) ○ + percentil 90 ● La media de todas las muestras recibidas (4.725) ○ + percentil 90 ● Número de muestras recibidas (4)
  40. 40. Gauges Solo la última muestra recibida durante un flush interval es guardada. Por ejemplo, si durante un flush interval statsd recibe las siguientes muestras para una métrica determinada: 1, 7, 4, 2. Statsd solo guardará el valor 2, y ademas lo reenviará al storage en cada flush interval
  41. 41. Sets Suma el número de muestras recibidas (no su valor, si no la cantidad de muestras recibidas) para una métrica determinada durante un flush interval. Pero para los valores repetidos, solo contará 1. Por ejemplo, si enviamos las muestras: 3, 4, 5, 2, 2, 3. Guardará un valor 4. porque descartará los repetidos, convirtiendo 3, 4, 5, 2, 2, 3 en 3, 4, 5, 2. Por lo tanto, guardará un valor 4. (4 muestras recibidas)
  42. 42. Balanceando vários statsd statsd statsd statsd Almacén de métricasBalanceador DNS Round Robin UDP Load Balancer (https://github.com/felixcarmona/udp-load-balancer) 1 3 2 ¿ 1 , 3 , 2 ? se guardará solo uno de los statsd que reporten
  43. 43. Balanceando vários statsd statsd statsd statsd statsd Almacén de métricas 1 3 2 6 Balanceador DNS Round Robin UDP Load Balancer (https://github.com/felixcarmona/udp-load-balancer)
  44. 44. Recolectando métricas con collectd Sistema Consultas Colector de métricas Almacén de métricas Cada X segundos (aka Interval) Visualizador de metricas collectd RRDtool Graphite (whisper) AWS CloudWatch Librato (Storage) Visage Graphite (web app) Librato AWS CloudWatch (web) nagios
  45. 45. Sistema Recolectando métricas con collectd + plugin statsd (escrito en C) Aplicación Muestras Colector Agregador collectd statsd plugin Almacén de métricas Visualizador de metricas RRDtool Graphite (whisper) AWS CloudWatch Librato (Storage)Consultas Visage Graphite (web app) Librato AWS CloudWatch (web)
  46. 46. Almacenes de métricas
  47. 47. 15 días de retención de datos $0,50 por metrica al mes AWS CloudWatch
  48. 48. Round Robin Database RRDtool Image from: http://www.loriotpro.com/Products/On-line_Documentation_V5/LoriotProDoc_EN/V22-RRD_Collector_RRD_Manager/V22- A1_Introduction_RRD_EN.htm
  49. 49. Escrito en Python Muy similar a RRDtool (Fixed size) Mas lento que RRDtool (Escrito en C) Roll-up: En lugar de desechar los datos más antiguos, los va degradando a menor resolución (60 métricas x 1 min -> 1 métrica x 1 h) Graphite (Whisper)
  50. 50. Librato 13 meses de retención Roll-up como whisper: ● Últimos 30 minutos: raw resolution ● Últimos 60 minutos: raw resolution ● Últimas 3 horas: 1 minuto de resolución ● Últimas 6 horas: 1 minuto resolución ● Últimas 12 horas: 15 minutos de resolución ● Últimas 24 horas: 15 minutos de resolución ● Últimos 3 días: 1 hora de resolución ● Últimos 7 días: 1 hora de resolución ● Últimas 4 semanas: 1 hora de resolución
  51. 51. Balanceando para Librato statsd statsd statsd LibratoBalanceador DNS Round Robin UDP Load Balancer (https://github.com/felixcarmona/udp-load-balancer) 1 3 2 1 , 3 , 2 se guardarán todos los statsd que reporten. Por lo que luego podremos leer la suma de todos (1 + 3 + 2 = 6), o la media de estos, etc
  52. 52. Visualizadores de métricas
  53. 53. Visage Image from http://hasnaas.blogspot.com.es/2013/08/gnome-opw-update-3.html
  54. 54. Graphite Image from https://www.devco.net/archives/2011/10/08/gdash-graphite-dashboard.php
  55. 55. AWS CloudWatch Image from http://blogs.clogeny.com/custom-metrics-in-amazon-cloudwatch/
  56. 56. Librato Image from http://blog.appharbor.com/2014/02/03/librato-integration-and-perfomance-metrics

×