Con el auge de internet y el creciente número de usuarios, las aplicaciones generan grandes volúmenes de datos. Estos logs o ficheros de registro del sistema son información potencial para cualquier negocio. Pero, ¿para qué nos sirven exactamente los logs?.
En el 95% de las veces nos van a ayudar a solucionar problemas en la plataforma, como incidentes de seguridad, actividades irregulares o problemas operacionales. Un log nos va a permitir ver los hábitos de navegación de nuestros usuarios, a qué hora se conectan más o desde dónde están accediendo o qué sitios de su web son los más visitados. Una forma de hacerlo es desde la misma línea de comandos, filtrando con herramientas del sistema del tipo grep, awk o sed entre otras. Hasta aquí no hay mucha novedad, el procesamiento de logs no es algo nuevo. Sin embargo, si estos registros se procesan en tiempo real y además se puede hacer de forma monitorizada sí que lo es. Os recomendamos visitar nuestro tutorial sobre MyRouter Log para guardar los logs del router.
¿Cómo monitorizamos en tiempo real los logs?
Existen muchas formas de hacerlo, con sus ventajas e inconvenientes, lo importante es encontrar la que más se adecúe a nuestro negocio y con la que nos sintamos más cómodos. Como en casi todo, disponemos de herramientas comerciales y software libre. En esta ocasión nos vamos a centrar en una solución utilizando varios softwares libres como Logstash, Redis, Elasticsearch y Kibana.
Redis
En la arquitectura propuesta, vamos a usar Redis como un buffer intermedio donde los logs son almacenados antes de ser indexados por Logstash e insertados en Elasticsearch a modo de cola.
Redis es un almacén de conjuntos clave-valor. Las claves son cadenas de texto que identifican valores (bloques de datos). Al ser una base de datos en memoria con la posibilidad de persistencia a disco, la diferencia de otras aplicaciones como, por ejemplo, Memcached que no lo soportan. Entre las muchas ventajas de esta herramienta destaca que se emplea para implementar características específicas de forma fácil y rápida.
Logstash
Logstash es un software escrito en Java para la administración de logs. En el diseño propuesto se va a encargar de recoger, transformar y dirigir. Logstash lee y parsea los logs almacenados en Redis para después escribirlos en Elasticsearch donde se almacenan y comparten.
Logstash se caracteriza por soportar un gran número de entradas de datos, como ficheros o bases de datos, al igual que códecs, filtros y salidas donde los logs procesados son escritos.
Elasticsearch
Esta potente herramienta nos permitirá indexar un gran volumen de datos y nos sirve de almacenamiento centralizado para todos nuestros logs e indexarlos para que su búsqueda posterior se ejecute rápidamente.
Elasticsearch es un servidor de búsqueda escrito en Java y basado en Apache Lucene, aunque pude usarse desde Python, .NET, PHP o incluso desde un navegador con Javascript. Entre sus cualidades destacan la escalabilidad, que es distribuido y que está pensado especialmente para aplicaciones en tiempo real.
Kibana
Kibana es un frontend web para Elasticsearch que permite visualizar nuestros logs, generar gráficos, tablas e incluso mapas. Este sistema analítico con licencia Apache nos permite hacer búsquedas y análisis sobre los datos almacenados en Logstash y Elasticsearch. Se caracteriza por poseer una interface muy potente que puede crear dashboards personalizados que se guardan y comparten.
Está claro que necesitamos explotar los logs ya sea con herramientas opensource o comerciales. Los logs nos van a permitir encontrar problemas en nuestras aplicaciones y solucionarnos, vamos a aprender cómo se comporta nuestro sistema en entornos que no conocemos, y sobre todo nos va a ayudar a mejorar la experiencia de nuestros usuarios. En definitiva, «all you need is log».