1. Introducción #
La función de Logstash.
Para qué sirve Logstash #
Logstash es el motor de procesamiento de la suite Elastic: recibe datos de fuentes muy variadas, los transforma (análisis, limpieza, enriquecimiento) y los envía a uno o varios destinos. Está escrito en Java y se amplía con más de 200 plugins.
- Centralizar logs heterogéneos (syslog, archivos, bases de datos, colas).
- Estructurar mensajes en bruto en campos ECS.
- Enrutar hacia varios destinos (Elasticsearch, S3, Kafka).
2. El concepto de pipeline #
Inputs, filtros, salidas.
Las tres etapas #
input { beats { port => 5044 } }
filter {
grok { match => { "message" => "%{COMBINEDAPACHELOG}" } }
date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] }
}
output { elasticsearch { hosts => ["https://es:9200"] data_stream => true } }Cada evento pasa por el input, espera en la cola (en memoria por defecto) y después un worker le aplica los filtros en orden y lo envía a las salidas. Varios workers trabajan en paralelo sobre lotes de eventos.
Para saber: Las condiciones (if [campo] == "valor" { … }) permiten aplicar filtros o salidas solo a una parte de los eventos.3. Instalación #
Paquetes, archivo, Docker.
Instalar #
# Debian / Ubuntu
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/9.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-9.x.list
sudo apt update && sudo apt install logstash
sudo systemctl enable --now logstash
# Docker
docker run --rm -it -v $PWD/pipeline:/usr/share/logstash/pipeline docker.elastic.co/logstash/logstash:9.1.0| Archivo | Función |
|---|---|
| /etc/logstash/logstash.yml | ajustes del nodo (rutas, workers, API) |
| /etc/logstash/pipelines.yml | lista de pipelines |
| /etc/logstash/conf.d/*.conf | configuración de los pipelines |
| /etc/logstash/jvm.options | memoria de la JVM |
Buena práctica: Prueba la configuración antes de cada reinicio: /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t.