Curso ELK: Fundamentos del Stack ELK
Hace tiempo hablamos de como instalar el Stack de ELK bajo Docker, queremos hacer una serie de entradas en formato curso gratuito definiendo terminología, fundamentos y operativa práctica.
He comprado un NAS Asustor AS6804T y he vuelto a desplegar todo el ecosistema bajo Portainer + Docker. Así vamos a dar los fundamentos iniciales, si estás empezando en el mundo de la “observabilidad”.
¿Qué es ELK Stack?
ELK son las siglas de:
- Elasticsearch: un motor de búsqueda y almacenamiento de datos. Pero no tipo Google… aquí puedes indexar registros, métricas, trazas o cualquier cosa que quieras buscar y analizar rápidamente.
- Logstash: una herramienta que recoge datos de diferentes fuentes, los transforma y los envía a Elasticsearch.
- Kibana: la interfaz bonita. Con ella puedes visualizar, buscar y analizar lo que está guardado en Elasticsearch.
En resumen: recoges logs, los transformas, los almacenas y los ves con gráficos y búsquedas.
Conceptos básicos que debes tener claros desde el principio
Término | Explicación clara y para qué sirve |
---|---|
Índice | Carpeta donde Elasticsearch guarda los logs. Piensa en ello como una tabla (pero en JSON). |
Documento | Cada log, línea o evento. Todo lo que mandas se convierte en un JSON dentro del índice. |
Mapping | El esquema de datos: qué campos hay y de qué tipo son (text , keyword , date , etc.). |
Field | Cada clave dentro de un documento JSON. Ej: host , message , user.name , etc. |
@timestamp | Es la hora del evento. Imprescindible para visualizar en gráficos y filtrar en Discover. |
Data View | Kibana necesita saber qué datos puede consultar. Es como decirle: “mírame en los índices logs-*”. |
Alias | Un nombre “fijo” para un índice o varios. Ideal para hacer rotación de datos y no romper queries. |
Pipeline | Camino que siguen los datos: llegan, se transforman (si toca) y se indexan. |
Grok | El regex de Logstash. Sirve para “romper” una línea de log y convertirla en campos separados. |
Mutate | Filtro en Logstash que modifica datos: cambia mayúsculas, elimina campos, añade tags, etc. |
Beats | Agentes ligeros que recogen datos: Filebeat (logs), Metricbeat (métricas), Packetbeat (red)… |
Module | Configuración predefinida de Filebeat (por ejemplo, para logs de Apache o NGINX). |
Ingest Node | Nodo de Elasticsearch que transforma datos sin Logstash (ideal para setups ligeros). |
ILM (Index Lifecycle Management) | Política que borra, rota o mueve índices automáticamente (útil para ahorrar espacio). |
Template | Reglas que se aplican automáticamente a nuevos índices (mappings, settings, etc). |
Shard | Un índice se divide en porciones llamadas “shards”. Sirven para paralelizar búsquedas. |
Replica | Copia de seguridad de un shard. Mejora la disponibilidad y el rendimiento de lectura. |
Aggregation | Forma de agrupar y calcular cosas (conteo, promedio, por término, por fecha…). |
Cluster Health | Estado global de Elasticsearch: green (todo bien), yellow (faltan réplicas), red (caído). |
KQL (Kibana Query Language) | Lenguaje para buscar cosas en Discover. Más sencillo que Lucene, más potente que SQL. |
Dev Tools Console | Terminal integrada en Kibana para escribir comandos y ver respuestas directamente. |
Watcher | Sistema para crear alertas personalizadas (requiere seguridad activada o versión de pago). |
Transform | Permite agrupar y pivotar datos, como en una tabla dinámica. |
Snapshot | Backup de los índices, configurable para guardar en NAS o bucket. |
Dashboards | Paneles gráficos interactivos. Puedes mostrar métricas, logs, contadores, tablas, etc. |
Space | Entornos separados dentro de Kibana. Útil para multiusuario o varios equipos. |
APM | Application Performance Monitoring: trazas de aplicaciones. Útil en microservicios. |
Fleet / Agent | Nueva forma unificada de gestionar Beats, directamente desde Kibana (8.x lo empuja bastante). |
Menús principales dentro de Kibana
Como ya hemos comentado, Kibana es la “interfaz bonita”, así que vamos a explicar los menús más usados normalmente que podemos encontrar en las versiones actuales:
Analytics
Aquí es donde harás vida. Sirve para explorar datos y montar dashboards.
-
Discover: lo usas para buscar logs y ver qué está entrando. Muy útil cuando empiezas con un nuevo tipo de log.
-
Dashboards: paneles con gráficas, contadores, barras… Ideal para hacer informes o tener vistas en tiempo real.
-
Visualize/Lens: creación de gráficas. Lens es más visual y fácil, Visualize más técnico.
-
Canvas: presentaciones interactivas con datos en tiempo real (muy de marketing o directivos).
Observability
Más centrado en logs, métricas y trazas en infraestructuras complejas.
-
Logs: interfaz especial para ver logs organizados por host o servicio.
-
Metrics: estadísticas del sistema (si integras metricbeat o Prometheus).
-
APM: trazas de aplicaciones (si usas Elastic APM).
-
Uptime: chequeo de servicios/URLs con Heartbeat.
Security
Este módulo está muy enfocado al mundo SIEM.
-
Overview: visión general de eventos de seguridad.
-
Detections: reglas que detectan comportamientos sospechosos.
-
Timelines: reconstrucción de incidentes.
-
Cases: para gestionar investigaciones de seguridad.
Importante: muchas opciones aquí requieren tener activado el xpack.security (que en Docker por defecto viene desactivado).
Management
Donde gestionas lo importante, como los índices, usuarios, y configuraciones internas.
-
Stack Management > Data Views: imprescindible para poder usar Discover o dashboards. Aquí defines qué índices quieres ver.
-
Dev Tools: consola tipo terminal donde puedes escribir comandos directamente contra Elasticsearch.
-
Index Management: ver el estado de tus índices, espacio ocupado, número de documentos, etc.
-
Users/Roles: si tienes seguridad activada, desde aquí se controla quién ve qué.
Seguiremos con más entradas en próximos días…
Entradas Curso ELK
- Curso ELK: Fundamentos del Stack ELK
- Curso ELK: Montar ELK Stack en Portainer y Docker Compose
- Curso ELK: Cómo en Enviar Logs de Windows 11
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?