Logstash

1
11311

En este tutorial investigamos la herramienta Logstash, de Elastic, para administrar nuestros logs.

0. Índice de contenidos

1. Introducción

Logstash es una herramienta desarrollada por Elastic y que funciona bajo la JVM de Java. Ésta nos permite administrar los logs de nuestras aplicaciones, de manera que podemos usarla para recolectar, parsear y guardar los logs para búsquedas posteriores.

En este tutorial veremos cómo usarla.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2.4 Ghz Intel Core I5, 8GB DDR3).
  • Sistema Operativo: Mac OS Yosemite 10.10.3
  • Entorno de desarrollo:
    • Eclipse Mars
    • Versión de Java: JDK 1.8.0_51
    • Logstash 1.5.4

3. Logstash

Esta herramienta basa su funcionamiento en la integración de entradas, códecs, filtros y salidas. Las entradas son las fuentes de datos que se usarán posteriormente; los códecs convierten un formato de entrada en otro que Logstash acepte, y éste último formato en otro de salida. Los códecs se usan (normalmente) cuando los datos no son texto plano.

Los filtros son acciones usadas para procesar eventos, modificándolos o eliminarios. Por último, las salidas son los destinos donde se enviarán los datos procesados.

La gran diferencia de Logstash con el resto de herramientas del estilo reside en que tiene a su disposición un gran número de plugins para las tres partes de las que se compone.

Para cerrar este apartado, mencionar que Logstash puede configurarse para utilizar varios servidores de la siguiente forma: se enviarán los logs a un único servidor hasta que éste falle. Cuando eso ocurra, cambiará de servidor y listo. Sin embargo, los logs almacenados en el servidor que ha fallado no serán accesibles hasta la recuperación del mismo.

4. Instalación y ejemplo sencillo

Logstash necesita una versión de Java superior a la 7, por lo que lo mejor es asegurarse de que tenemos una versión de Java adecuada mediante el comando:

Perfecto.

Vamos al tema. Lo primero que tenemos que hacer es descargar Logstash desde su página de descarga. Seleccionamos el archivo .zip o .tar.gz y lo descomprimimos donde queramos.

Vamos a probar que funciona. Nos vamos al directorio que acabamos de descargar usando el conocido comando cd y ejecutamos logstash con una configuración muy simple (luego la explicamos en detalle):

La segunda línea simplemente le dice a Logstash que le vamos a pasar una configuración desde la propia linea de comandos. Esto nos permite configurar la herrramienta de forma rápida y sin tener que crear ficheros de configuración.

En este ejemplo hemos indicado que la entrada sea la propia entrada de teclado (stdin) y la salida sea la propia terminal (stdout). De este modo, si escribimos cualquier cosa en la terminal, Logstash responderá con el mismo mensaje, añadiendo una timestamp y la IP. La herramienta tarda un poquito en cargar, así que habrá que esperar a que aparezca el mensaje de que se ha cargado.

Para finalizar la ejecución del programa, presionar la combinación de teclas Ctrl+D.

5. Algo más avanzado

Hemos visto un ejemplo muy básico de cómo funciona esta utilidad. Compliquémoslo un poco más…

Vamos a hacer que Logstash tome uno de los ficheros de log que tenga una aplicación y nos avise mediante email de que (por ejemplo) se ha hecho una petición sobre sobre un recurso, pero parseando la línea de log para tener otra representación.

Es decir, cada vez que en log aparezca esta línea:

Queremos nos llegue un mail con la siguiente información:

5.1. Configuración de Logstash

Lo primero es configurar los plugins de Logstash: entrada, filtro y salida.

Entrada

La entrada en este caso va a ser un fichero de log alojado en el sevidor, bajo la ruta {catalina.home}/logs/loging.log

OJO: No hay que poner path relativo, {catalina.home} hace referencia al directorio raíz del servidor en este caso. Hay que poner el path absoluto del fichero.

Filtro

Como queremos parsear la entrada, debemos crear un filtro que realice esta tarea. Para ello, hay una herramienta llamada Grok que permite parsear texto con expresiones regulares.

Para saber qué expresiones regulares usar y crear vuestras propias formas de parsear, os recomiendo que uséis las siguientes herramientas:

  • Lista de patrones de Grok. Os ayudar´n a encontrar los patrones que queréis parsear.
  • Constructor y test de expresiones Grok. Útil para crear y probar expresiones de parseo.
  • Grok Debugger. Para probar que las expresiones creadas cumplen con lo esperado.

En nuestro caso, la expresión que buscamos es:

Como vemos, el debugger nos dice que la hemos creado de forma correcta:

Creamos el filtro pues:

Salida

Por último, configuramos la salida. Queremos que se nos mande un mail cada vez que aparezca en el log la línea arriba mencionada. La configuración entonces será:

El fichero log-to-mail.conf completo quedaría de la siguiente forma:

log-to-mail.conf

REPETIMOS: No hay que poner path relativo, {catalina.home} hace referencia al directorio raíz del servidor en este caso. Hay que poner el path absoluto del fichero.

Bueno, pues ya estamos preparados.

5.2. Lanzando Logstash

Una vez creado el fichero de configuración, lo movemos al directorio donde esté instalado Logstash. Lo siguiente que debemos hacer es ejecutar nuestra aplicación para que el fichero de log empiece a generar datos.

Para lanzar Logstash, abrimos la terminal, vamos al directorio de instalación y ejecutamos la siguiente sentencia para probar la configuración:

Una vez Logstash nos da el OK, lo lanzamos con el comando:

Lanzamos nuestra aplicación y al realizar una petición sobre un recurso veremos cómo nos llega a nuestro correo un mail nuevo con la información del Log.

6. Conclusiones

Hemos visto un ejemplo más o menos sencillo con Logstash. Sin embargo, esta herramienta permite realizar mucho más, sobre todo si se utiliza junto con Elasticsearch, herramienta de la que nuestro compañero Daniel Rodríguez Hernández nos debaja un tutorial

Creo que tiene muchísimo potencial y que es un punto a tener en cuenta para el procesado de logs para nuestras aplicaci

Espero que este tutorial haya activado vuestras ganas de aprender más sobre Logstash. Os animo a experimentar con esta herramienta y ver qué podéis sacarle.

¡Un saludo!

Rodrigo de Blas

7. Referencias

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here