En esta entrada aprenderás los componentes y características principales del Stack de software ELK, compuesto por Elasticsearch, Logstash y Kibana. De esta forma podrás conocer sus ventajas para implementarlo en tus proyectos.
Contenidos
¿Qué es el Stack ELK?
El Stack ELK es un conjunto de tres tecnologías open source desarrolladas por la empresa de software Elastic muy popular. Trabajan de forma complementaria para proporcionar un sistema de gestión de logs centralizado y escalable adecuado para arquitecturas big data. Incluye un sistema de almacenamiento distribuido, un motor de búsqueda y de procesamiento y un sistema de visualización.
Componentes y Arquitectura
Las tecnologías que componen este stack son Elasticsearch, Logstash y Kibana:
Elasticsearch
Es la capa que proporciona la capacidad de almacenamiento y de búsqueda de datos al sistema. Puedes aprender más en este artículo de introducción a Elasticsearch.
Logstash
Logstash es la pieza encargada de transformar y de almacenar los logs de las aplicaciones. Está desarrollado en JRuby. Las transformaciones suelen normalizar y agregar logs de diversas fuentes, para tener un punto de almacenamiento unificado y prepararlos para su análisis posterior.
La lógica está basada en el concepto de pipeline de datos. Una pipeline es un proceso ETL que consta de una fuente de datos, un filtro y un destino. Una vez recopilados los datos de la fuente, Logstash los filtra mediante expresiones regulares y les aplica el conjunto de operaciones que se hayan definido. Por último, se escriben en el sistema destino con la estructura que necesitemos.
Kibana
Kibana es el software que nos permite crear visualizaciones y dashboards para visualizar de manera correcta y amigable los logs. Se conecta directamente a un índice de Elasticsearch.
Proporciona una interfaz web desde la que se pueden configurar las representaciones y los filtros sobre los datos. Estos paneles pueden incluir tablas y gráficos interactivos que se pueden actualizar en tiempo real. Para hacer consultas a los datos, proporciona el lenguaje de consulta KQL (Kibana Query Language).
Ventajas de ELK
El problema principal que ELK resuelve es que la generación de logs en arquitecturas de software con componentes diversos está descentralizada y los logs no siguen un modelo unificado. Con esta solución, es posible mantener un sistema de gestión y de visualización de logs fácil de operar, que ahorra un tiempo muy valioso a la hora de analizar errores o problemas.
Gestionar y analizar de una forma adecuada estos ficheros de log nos permite actuar de manera más eficaz ante problemas en el servicio, y conocer las causas el mismo. Por ejemplo, mediante consultas en tiempo real para identificar rápidamente errores o comportamientos en nuestros sistemas.
Instalación de ELK
ELK se puede instalar en cualquier entorno, tanto en on premises como en cloud con máquinas virtuales o con Docker. A continuación muestro una guía para instalarlo en un entorno Linux estándar.
Como prerrequisito, debemos tener Java instalado en nuestro sistema. Para comprobar que se encuentra instalado correctamente, usaremos el siguiente comando:
$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
A continuación, procedemos a descargar e instalar Elasticsearch. La guía de instalación de este componente la puedes encontrar en el artículo de introducción a Elasticsearch.
Después, instalaremos y configuraremos Kibana. También podemos descargarlo desde la web oficial. Una vez descargado y descomprimido, lo ejecutamos con el siguiente comando:
$ ./bin/kibana
Para acceder a la interfaz web abriremos en un navegador la dirección localhost:5601. Cuando lo abrimos, nos dejará seleccionar entre varias opciones el tipo de gráfico que queremos visualizar y también deberemos configurar la fuente de los datos. Kibana se puede configurar mediante el fichero de configuración kibana.yml en el directorio config de la instalación.
Por último, debemos instalar Logstash. Para ello, lo descargamos y descomprimimos.
Para configurarlo, deberemos editar un fichero .conf en el que especificaremos un elemento input, un elemento filter y un elemento output o bien especificarlo como argumento (-e) al ejecutar el software:
$ ./logstash -e 'input { stdin { } } output { stdout {} }'
En este comando de ejemplo, hemos especificado como input la entrada estándar y como output la salida estándar sin ningún filtro. Para especificar un fichero con la conexión a Elasticsearch, podemos configurarlo de la siguiente forma:
input {
file {
path => "fichero-log.log"
start_position => beginning
}
}
filter {}
output {
stdout {}
elasticsearch {}
}
Y para ejecutarlo usamos el argumento -f.
$ ./logstash -f configuracion.conf
Cursos y Siguientes pasos con ELK
A continuación, te recomiendo que dediques tiempo a completar alguno de los siguientes cursos de Udemy, con la finalidad de asentar tus conocimientos y usar el stack ELK en proyectos reales.
Guía completa de ELK Stack: Elasticsearch, Logstash, Kibana
Con este curso podrás aprender en 12 horas a usar Elasticsearch, Logstash y Kibana para analizar y visualizar datos.
Elastic Stack: Beats, Logstash, Elasticsearch, Kibana. ELK
En este curso el instructor explica paso a paso cómo implementar una solución de análisis de logs con el stack ELK de forma práctica.
Preguntas Frecuentes ELK Stack – FAQ
¿Qué es el Elastic stack?
El stack de Elastic, Elastic stack o ELK es un conjunto de tres tecnologías open source (Elasticsearch, Logstash y Kibana) usado para analizar datos, generalmente de logs generados por aplicaciones y datos de series temporales.
¿Qué hace Logstash?
Logstash es la pieza del stack que actúa como pipeline de procesamiento de datos e ingesta. Puede procesar datos de diversas fuentes, transformarlos y enviarlos en la forma que se desea a la tecnología de almacenamiento, en este caso Elasticsearch.
¿Es el stack ELK gratuito?
El Stack ELK es gratuito, y se fundamenta en tres tecnologías open source de distribución libre y disponibles en repositorios públicos.
¿Cuál es la diferencia entre Kibana y Grafana?
Estas dos tecnologías se enfocan en la visualización de datos, de métricas y de series temporales, pero se han especializado en diferentes tipos de proyectos. Generalmente, Kibana se despliega junto a Elasticsearch, lo que le da una gran potencia en búsquedas complejas y rápidas de datos. Por otro lado, Grafana es muy potente en casos de uso en los que se necesita monitorizar datos de métricas en tiempo real.
A continuación, el vídeo-resumen. ¡No te lo pierdas!