Logstash

Definición y propósito

Logstash es una herramienta de ingesta y procesamiento de datos del stack Elastic. Su función principal es recolectar datos desde múltiples fuentes, transformarlos mediante filtros y enviarlos a destinos como Elasticsearch. Actúa como un pipeline flexible de ETL orientado a datos en tiempo real.

Arquitectura basada en pipelines

  • Input
    • Define las fuentes de datos
    • Soporta archivos, TCP/UDP, HTTP, bases de datos, colas y brokers
    • Permite ingestión continua o por lotes
  • Filter
    • Etapa de transformación y enriquecimiento
    • Procesamiento estructurado y no estructurado
    • Normalización de campos y formatos
  • Output
    • Define los destinos finales
    • Uso más común: envío a Elasticsearch
    • Soporte para múltiples salidas simultáneas

Inputs más utilizados

  • File
    • Lectura de logs desde archivos locales
    • Seguimiento del offset para evitar reprocesos
  • Beats
    • Recepción de datos desde Filebeat, Metricbeat y otros
    • Uso común en arquitecturas distribuidas
  • HTTP
    • Recepción de eventos vía API REST
    • Integración con aplicaciones externas
  • Kafka
    • Consumo de streams de eventos
    • Alta escalabilidad y tolerancia a fallos

Filtros principales

  • grok
    • Parseo de texto no estructurado mediante patrones
    • Muy usado para logs de aplicaciones y servidores
  • mutate
    • Renombrar, eliminar o convertir campos
    • Limpieza y normalización de datos
  • date
    • Conversión de timestamps a formato estándar
    • Clave para análisis temporal en kibana
  • geoip
    • Enriquecimiento con información geográfica
    • Uso común en análisis de tráfico y seguridad
  • json
    • Parseo de payloads JSON
    • Conversión automática a campos estructurados

Outputs comunes

  • Elasticsearch
    • Indexación directa de eventos procesados
    • Configuración de índices, pipelines y autenticación
  • File
    • Escritura de eventos procesados a disco
    • Uso frecuente para depuración
  • Stdout
    • Visualización en consola
    • Útil en desarrollo y testing

Configuración

  • Basada en archivos .conf
  • Sintaxis declarativa por secciones
  • Permite múltiples pipelines simultáneos
  • Soporte para variables de entorno

Escalabilidad y rendimiento

  • Procesamiento en paralelo mediante workers
  • Ajuste de batch size y batch delay
  • Posibilidad de escalar horizontalmente
  • Integración con colas para desacoplar productores y consumidores

Gestión de errores y resiliencia

  • Manejo de eventos fallidos
  • Dead Letter Queue para datos no procesables
  • Reintentos configurables
  • Logs detallados para diagnóstico

Casos de uso comunes

  • Centralización de logs
  • Normalización de datos heterogéneos
  • Enriquecimiento de eventos antes de indexar
  • Integración de sistemas legacy
  • Procesamiento previo a analítica y observabilidad

Relación con Kibana y Elasticsearch

  • Logstash prepara y estructura los datos
  • Elasticsearch los indexa y almacena
  • kibana los visualiza y analiza
  • Juntos forman un flujo completo de observabilidad y análisis

Buenas prácticas

  • Mantener pipelines simples y modulares
  • Usar grok de forma eficiente para evitar impacto en rendimiento
  • Validar datos antes de indexar
  • Separar pipelines por dominio o fuente
  • Monitorizar el uso de memoria y CPU