Logstash 101: Entendiendo el proceso de ingestión

1. Arquitectura

El primer paso para poder implementar un correcto proceso de ingesta de datos es disponer de una adecuada arquitectura de los 3 stacks, y, sobre todo, entenderla.

image.png

En el diagrama anterior podemos ver bien definidos los tres stacks o capas de la arquitectura de ELK:

  • E: Elasticsearch
  • L: Logstash
  • K: Kibana

A pesar de que su acrónimo es ELK, en realidad, el orden dentro del ciclo de ingestión de datos se inicia con Logstash.

2. Logstash: ingestando datos

Nuestra primera parada nos lleva a una de las piezas fundamentales del sistema ELK y, a pesar de que todos y cada uno de los stacks requieren de un minucioso proceso de diseño e implementación, la configuración de Logstash es, si cabe, la más importante y compleja de todas.

Logstash es el punto de entrada de la mayoría de flujos de datos y es la herramienta que nos va a permitir, no solo filtrar los datos, sino también moldear su salida para adaptarla a nuestras necesidades.

3. Proceso básico de ingesta

Las tres fases fundamentales del proceso en Logstash son:

1. Input

En esta primera fase se configurarán los puntos de entrada en Logstash, mediante los que podremos decidir los flujos de datos.

Una de las grandes virtudes de ELK es su capacidad para aceptar cualquier tipo de dato, por lo que estaremos en disposición de analizar cualquier flujo de datos, tanto si es Logstash quien lo solicita como si es directamente ingestado en él.

Algunos ejemplos de tipos de datos son:

  • SNMP
  • SysLogs
  • SQL
  • Métricas de servidores
  • y un largo etc.

2. Filter

Una vez el dato entra en nuestro ciclo de ingesta, podemos manipularlo. Esto es, trabajar con él para adaptar su procesado a nuestras necesidades.

Elasticsearch funciona por documentos. Cada dato insertado, con todas sus propiedades asociadas, se almacena como un único documento dentro de un determinado índice.

De esta forma Elasticsearch es capaz de buscar de forma tremendamente eficiente en los cientos de millones de documentos que puede almacenar.

En la fase de filtrado, Logstash permite desde renombrar campos, añadir nuevos, modificar el flujo mediante condicionales hasta aplicar operaciones matemáticas sobre los datos.

Logstash, además, nos permite usar código Ruby embebido para extender todavía más su capacidad de proceso de datos.

3. Output

Una vez tenemos el dato formateado, la última etapa del proceso de ingestión es la de inserción del documento en el índice escogido.

Esta fase nos permite discriminar los datos en función de parámetros tales como tipos, fuentes de entrada, localizaciones, etc.

Posteriormente Kibana será capaz de acceder a los índices utilizando patrones de indexado, por lo que escoger un estándar correcto para la nomenclatura de los índices puede ahorrarnos mucho trabajo más adelante.