Introducción
En este módulo, aprenderemos cómo integrar Elasticsearch con Logstash, una herramienta de procesamiento de datos que permite la ingesta, transformación y almacenamiento de datos en Elasticsearch. Logstash es parte de la pila ELK (Elasticsearch, Logstash, Kibana) y es fundamental para la ingesta de datos en tiempo real.
¿Qué es Logstash?
Logstash es una herramienta de procesamiento de datos que permite la ingesta, transformación y almacenamiento de datos. Es altamente configurable y puede manejar una variedad de fuentes de datos, transformarlas y enviarlas a múltiples destinos, incluido Elasticsearch.
Características Clave de Logstash
- Ingesta de Datos: Puede recibir datos de múltiples fuentes como archivos, bases de datos, servicios web, etc.
- Transformación de Datos: Permite transformar y enriquecer los datos mediante filtros.
- Salida de Datos: Puede enviar datos a múltiples destinos, siendo Elasticsearch uno de los más comunes.
Instalación de Logstash
Requisitos Previos
- Tener Elasticsearch instalado y en funcionamiento.
- Java 8 o superior instalado en el sistema.
Pasos de Instalación
-
Descargar Logstash:
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0.tar.gz tar -xzf logstash-7.10.0.tar.gz cd logstash-7.10.0
-
Configurar Logstash: Crear un archivo de configuración
logstash.conf
:nano logstash.conf
Ejemplo de configuración básica:
input { file { path => "/path/to/your/logfile.log" start_position => "beginning" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => ["localhost:9200"] index => "logstash-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
-
Ejecutar Logstash:
bin/logstash -f logstash.conf
Configuración de Logstash
Entradas (Inputs)
Logstash puede recibir datos de múltiples fuentes. Algunos de los plugins de entrada más comunes son:
- file: Lee datos de archivos.
- beats: Recibe datos de Beats.
- http: Recibe datos a través de HTTP.
Ejemplo:
Filtros (Filters)
Los filtros permiten transformar y enriquecer los datos. Algunos de los filtros más comunes son:
- grok: Analiza y estructura datos no estructurados.
- mutate: Modifica campos en los eventos.
- date: Analiza fechas en los eventos.
Ejemplo:
filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } }
Salidas (Outputs)
Logstash puede enviar datos a múltiples destinos. Algunos de los plugins de salida más comunes son:
- elasticsearch: Envía datos a Elasticsearch.
- stdout: Imprime datos en la consola.
- file: Escribe datos en archivos.
Ejemplo:
output { elasticsearch { hosts => ["localhost:9200"] index => "logstash-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
Ejemplo Práctico
Configuración Completa
Supongamos que queremos procesar un archivo de logs de Apache y enviarlo a Elasticsearch. Nuestra configuración de Logstash sería:
input { file { path => "/var/log/apache2/access.log" start_position => "beginning" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } } output { elasticsearch { hosts => ["localhost:9200"] index => "apache-logs-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
Ejecución
Para ejecutar Logstash con esta configuración:
Ejercicio Práctico
Ejercicio 1: Procesar Logs de Sistema
- Objetivo: Configurar Logstash para procesar logs del sistema y enviarlos a Elasticsearch.
- Pasos:
- Crear un archivo de configuración
syslog.conf
. - Configurar la entrada para leer
/var/log/syslog
. - Usar el filtro
grok
para analizar los logs. - Configurar la salida para enviar los datos a Elasticsearch.
- Crear un archivo de configuración
Solución
input { file { path => "/var/log/syslog" start_position => "beginning" } } filter { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp" , "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } output { elasticsearch { hosts => ["localhost:9200"] index => "syslog-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
Conclusión
En este módulo, hemos aprendido cómo integrar Elasticsearch con Logstash para la ingesta y procesamiento de datos. Hemos cubierto la instalación, configuración y ejecución de Logstash, así como un ejemplo práctico y un ejercicio para reforzar los conceptos aprendidos. Con esta base, estarás preparado para manejar la ingesta de datos en tiempo real y su almacenamiento en Elasticsearch, lo que es fundamental para cualquier aplicación de análisis de datos en tiempo real.
Curso de Elasticsearch
Módulo 1: Introducción a Elasticsearch
- ¿Qué es Elasticsearch?
- Instalando Elasticsearch
- Conceptos Básicos: Nodos, Clústeres e Índices
- Arquitectura de Elasticsearch
Módulo 2: Empezando con Elasticsearch
Módulo 3: Técnicas Avanzadas de Búsqueda
Módulo 4: Modelado de Datos y Gestión de Índices
- Mapeo y Analizadores
- Plantillas de Índices
- Alias y Reindexación
- Gestión del Ciclo de Vida del Índice
Módulo 5: Rendimiento y Escalabilidad
- Optimizando el Rendimiento de Búsqueda
- Escalando Elasticsearch
- Monitoreo y Mantenimiento
- Respaldo y Restauración
Módulo 6: Seguridad y Control de Acceso
- Asegurando Elasticsearch
- Autenticación y Autorización de Usuarios
- Control de Acceso Basado en Roles
- Auditoría y Cumplimiento
Módulo 7: Integraciones y Ecosistema
- Elasticsearch con Logstash
- Elasticsearch con Kibana
- Elasticsearch con Beats
- Elasticsearch con Otras Herramientas