Detrás del Backend [phpDay 2015]
-
Upload
felix-carmona -
Category
Data & Analytics
-
view
382 -
download
3
Transcript of Detrás del Backend [phpDay 2015]
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
¿Cual fue el impacto del último código deployado?
¿Ha repercutido sobre los usuarios?¿Negativamente?
¿Deberiamos hacer rollback?
Recolectando métricas con statsd
Aplicación
Peticiones
Muestras
Agregador de métricas
Almacén de
métricas
Agrupación y guardadode las métricas recibidasdurante x segundos(aka flush interval)
Visualizador de metricas
statsd Graphite (whisper)AWS CloudWatchLibrato (Storage)
Graphite (web app)LibratoAWS CloudWatch (web)
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.
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.
TimersFinalizado 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)
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
SetsSuma 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)
Balanceando vários statsd
statsd
statsd
statsd
Almacén de métricasBalanceador
DNS Round RobinUDP Load Balancer (https://github.com/felixcarmona/udp-load-balancer)
1
3
2
¿ 1 , 3 , 2 ?se guardará solo unode los statsd que reporten
Balanceando vários statsd
statsd
statsd
statsd
statsd Almacén de métricas
1
3
2
6Balanceador
DNS Round RobinUDP Load Balancer (https://github.com/felixcarmona/udp-load-balancer)
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 RRDtoolGraphite (whisper)AWS CloudWatchLibrato (Storage)
VisageGraphite (web app)LibratoAWS CloudWatch (web)nagios
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
RRDtoolGraphite (whisper)AWS CloudWatchLibrato (Storage)Consultas
VisageGraphite (web app)LibratoAWS CloudWatch (web)
Round Robin DatabaseRRDtool
Image from: http://www.loriotpro.com/Products/On-line_Documentation_V5/LoriotProDoc_EN/V22-RRD_Collector_RRD_Manager/V22-A1_Introduction_RRD_EN.htm
Escrito en PythonMuy 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)
Librato13 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
Balanceando para Librato
statsd
statsd
statsd
LibratoBalanceador
DNS Round RobinUDP Load Balancer (https://github.com/felixcarmona/udp-load-balancer)
1
3
2
1 , 3 , 2se 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