Gestión de logs de aplicaciones con ELK Stack
ELK Stack (Elasticsearch, Logstash, Kibana) es una suite de código abierto diseñada para recopilar, procesar, almacenar y visualizar grandes volúmenes de datos de registro procedentes de aplicaciones, sistemas y dispositivos. En este artículo detallado exploraremos arquitectura, instalación, configuración, escalado, seguridad y buenas prácticas para construir una solución profesional de gestión de logs.
1. Componentes principales del ELK Stack
| Componente | Función | Enlace oficial |
|---|---|---|
| Elasticsearch | Almacenamiento distribuido y motor de búsqueda RESTful | https://www.elastic.co/elasticsearch |
| Logstash | Procesamiento y transformaciones de logs. | https://www.elastic.co/logstash |
| Kibana | Visualización y análisis de datos en tiempo real. | https://www.elastic.co/kibana |
2. Arquitectura y flujo de datos
La arquitectura básica se compone de tres capas:
- Recogida de logs: agentes (Filebeat, Metricbeat, etc.) recolectan archivos de registro y métricas.
- Procesamiento: Logstash recibe, filtra, enriquece y envía eventos.
- Almacenamiento búsqueda: Elasticsearch indexa y hace disponibles los documentos.
- Visualización: Kibana crea dashboards, gráficos y alertas basadas en consultas.
3. Instalación y despliegue
3.1 Requisitos previos
- Sistemas basados en Linux (Ubuntu, CentOS, Debian).
- Java (OpenJDK 11 ) para Elasticsearch y Logstash.
- Recursos: al menos 4 GB RAM y 2 CPU por nodo.
3.2 Instalación básica
- Configuración del repositorio de Elastic:
- Instalar las componentes:
- Iniciar y habilitar servicios:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo apt-key add -
sudo apt-get install apt-transport-https
echo deb https://artifacts.elastic.co/packages/7.x/apt stable main sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install elasticsearch logstash kibana
4. Configuración de Logstash
El archivo de configuración de Logstash (/etc/logstash/conf.d/) consta de tres secciones:
- input: orígenes de datos (beats, syslog, HTTP).
- filter: grok, date, mutate, geoip, etc.
- output: destino (Elasticsearch, Kafka, ficheros).
Ejemplo de pipeline
input {
beats { port => 5044 }
}
filter {
grok { match => { message => %{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:msg} } }
date { match => [timestamp,ISO8601] }
}
output {
elasticsearch {
hosts => [localhost:9200]
index => app-logs-%{ YYYY.MM.dd}
}
}
5. Modelado de índices y mappings
Para optimizar búsquedas y almacenamiento, es recomendable:
- Definir mappings antes de indexar mediante plantillas (index templates).
- Separar índices por día, semana o mes según el volumen.
- Controlar número de shards y réplicas: shards = núcleos x 2, replicas = 1 o 2.
6. Visualización con Kibana
- Discover: exploración de logs crudos.
- Visualize: creación de gráficas de barras, líneas, pie.
- Dashboard: paneles integrados con múltiples visualizaciones.
- Canvas Maps: informes con diseño libre y mapas geo.
Para cada equipo de desarrollo se pueden crear dashboards personalizados que muestren:
- Tasa de errores (error rate).
- Latencias de peticiones.
- Uso de CPU y memoria.
- Alertas configuradas (Watcher o Alerting).
7. Escalado y rendimiento
Cuando el volumen de logs crece, debe atenderse:
- Escalado horizontal: añadir más nodos Elasticsearch.
- Balanceo de carga: usar coordinating nodes o proxies.
- Optimización de filtros: evitar grok demasiado genéricos.
- Index Lifecycle Management: automatizar rotación, borrado y congelado de índices.
8. Seguridad y control de acceso
El Stack ofrece:
- TLS: cifrado en tránsito.
- Autenticación: usuarios y roles integrados (X-Pack Security).
- Firewall: restringir puertos (9200, 5601, 5044).
- Auditoría: registro de accesos y cambios de configuración.
9. Buenas prácticas y recomendaciones
- Versionado de pipelines de Logstash en Git.
- Monitoreo de clúster con X-Pack Monitoring o Grafana y Prometheus.
- Uso de Filebeat módulos integrados para logs comunes (nginx, syslog, docker).
- Implementar Backups y snapshots periódicos de índices.
- Revisar y limpiar índices antiguos para ahorrar espacio.
10. Caso de estudio: Aplicación web de alto tráfico
Una empresa e-commerce con picos de 10 000 TPS admite un clúster de:
- 3 nodos master-eligible ( 2 iniciales para tolerancia a fallos).
- 6 nodos data-hot para indexación en caliente.
- 4 nodos ingest-coordinating para balanceo de Logstash.
- Retención de índices calientes de 30 días y warm de 90 días con ILM.
Se redujo el tiempo de búsqueda a menos de 200 ms y se habilitaron alertas en Kibana que notifican a Slack y e-mail ante latencias anómalas.
11. Conclusiones
ELK Stack es una solución robusta y flexible para la gestión de logs en entornos de cualquier escala. Su éxito radica en:
- Modularidad: intercambiabilidad de Beats, Logstash y otros forwarders.
- Escalabilidad: arquitectura distribuida de Elasticsearch.
- Visibilidad: paneles interactivos en Kibana.
Con una planificación adecuada de índices, seguridad y automatización de la rotación de datos, se consigue un sistema de observabilidad integral capaz de atender las necesidades de operaciones, desarrollo y seguridad.
Referencias:

Deja una respuesta