Dentro de un Backend

39
DENTRO DE UN BACKEND ¿Esta mi aplicación funcionando? Sandino Núñez / @sandinosaso

Transcript of Dentro de un Backend

DENTRO DE UN BACKEND

¿Esta mi aplicación funcionando?

Sandino Núñez / @sandinosaso

OBJETIVOS

¿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?

¿Deberíamos hacer rollback? ...

Elizabeth Galletto
En esta parte debo de hablar de la importancia que tiene contestar dichas preguntas.

Agenda

Introducción Logging Logstash Elasticsearch Kibana Arquitectura Demo

Introducción a LoggingPorque cada log nos cuenta una historia

Porque necesitamos logs

Desde el punto de vista de los desarrolladores

1. Para detectar problemas

2. Seguridad

3. Monitoreo

4. Métricas

5. Analizar tendencias

• Ayudar a debuggear el código• Nunca en producción!!!!

Anatomía de un log[Thu Aug 06 07:49:38.953108 2015] [notice] [pid 3343] AH00163: Apache/2.4.12 Resuming

normal operations

TIMESTAMP DATA

Porque los logs no son tan divertidos?

Puedes chequear que errores tuvimos ayer entre las 22:17 y las 22:22 hs?

Manejo de Logs (Como buscamos información)

netstat -an | awk '{print $5}' | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" | egrep -v "(`for i in \`ip addr | grep inet |grep

eth0 | cut -d/ -f1 | awk '{print $2}'\`;do echo -n "$i|"| sed 's/\./\\\./g;';done`127\.|0\.0\.0)" | sort -n | uniq -c | sort -n

sandino@envy:~$ awk -F\" '{print $6}' /var/log/apache2/access.log | sed 's/(\([^;]\+; [^;]\+\)[^)]*)/(\1)/' | sort | uniq -c | sort -fr

8 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36 1 Apache/2.4.12 (Ubuntu) PHP/5.5.9-1ubuntu4.9 (internal dummy connection)

Ninja de Expresiones Regulares(Superhéroe)

Porque es complejo analizar logs?

• Distintas formas de logging• Muchos formatos de timestamp• No hay contexto• Mensajes poco útiles• No escalan

LogstashRecolecta, Transmite, Interpreta y Almacena logs

Logstash

• Corre en JVM (JRuby)

• Open Source

• Altamente Configurable

• Centraliza Logs

• Recolecta y Parsea Logs

• Persiste y hace forward

Cómo funciona logstash?

Ejemplo Configuración Básica

Ejemplo Output Condicional

Estructurando la información

Reusando Patrones%{SINTAXIS:SEMANTICA}

Creando nuestros propios patroneshttps://grokdebug.herokuapp.com/

Inferencia de Patroneshttps://grokdebug.herokuapp.com/

ElasticsearchAlmacenamiento y Motor de búsqueda escalable

Características

• Herramienta para indexar documentos y búsquedas

• La información esta disponible a través de REST

• Indexación para búsqueda de texto (basado en Apache Lucene)

• Puede estar distribuido en múltiples "shards"

• 2 Tipos de shard: Primaria, Réplica

• Escrito en JAVA

Elasticsearch Cluster

KibanaInterfaz Web para búsquedas sobre elasticsearch

Características

• Open Source

• Código en Node.js

• Acceso a los datos de elasticsearch a través de REST

• Permite extensión mediantes Plugines

• Creación de distintas gráficas

• Creación de Dashboards

ArquitecturaComo unir todas las partes

Centralizando la información

Arquitectura Distribuida

Moraleja?

• Que loguear? TODO !!!• Guardar logs por mucho tiempo• Big Data• Movimiento DevOps• Estadísticas de Uso de Aplicación

DemoEstadísticas de Apache