Instalación de ELK Stack 7.10.x en Debian 10 (parte I)
Actualmente el stack está soportado y mantenido por la empresa Elastic. Todas las herramientas de ELK Satck son gratuitas, pero existen varios tipos de licenciamiento que nos aportan funcionalidades adicionales al stack como es el envío de alertas, seguridad avanzada, machine learning…etc, para más información sobre precios y tipo de licenciamiento https://www.elastic.co.
Si queremos una versión totalmente funcional o gratuita podemos optar por “Open Distro for Elasticsearch” (https://opendistro.github.io) que incluye multitud de funciones que son de pago en el ELK Satck.
En ese post instalaremos la versión básica o estándar de ELK Satck. El licenciamiento básico permite alertas desde Kibana con funcionalidades reducidas. Podemos utilizar Elastalert que permite enviar alertas sin coste alguno (https://github.com/Yelp/elastalert)
Antes de comenzar con el proceso de instalación de ELK Stack (Elastic Stack ) explicaremos brevemente las herramientas que lo ponen y la interacción entre ellas para tener una visión de conjunto.
El esquema básico del stack es el siguiente:
ELK Stack está pensado para trabajar con grandes volúmenes de datos, por lo que está preparado para poder trabajar en modo cluster con varios nodos, en este post configuraremos el stack en un único servidor que nos servirá para pequeñas instalaciones, aunque podremos añadir más nodos en un futuro para ampliar el nivel de procesamiento y seguridad.
La función de cada uno de los elementos del stack es la siguiente:
Elasticsearch
Es un motor de búsqueda y analítica de datos, desarrollado a partir de Apache Lucene, sobre una base de datos NoSQL. Una de sus funciones es almacenar documentos y construir un índice invertido para poder buscar datos en el documento casi en tiempo real. Los datos son almacenados como documentos JSON.
Los índices son la unidades de almacenamiento que en el caso de disponer de cluster se distribuirán por los nodos en los denominados Shard. En algunos posts comparan los índices con tablas o base de datos.
Logstash
Es el encargado de procesar la ingesta de dados para entregarlos a Elasticsearch. Logstash es una pipeline de procesamiento de datos, que te permite ingestar datos de múltiples fuentes simultáneamente, enriquecerlos y transformarlos antes de que se indexen en Elasticsearch.
Kibana
Kibana es la herramienta de visualización y gestión de datos para Elasticsearch. Permite la visualización de los datos a través de histogramas en tiempo real, gráficos circulares y mapas.
Beats
El stack es alimentado por los denominados Beats que son pequeños agentes (programas) que nos facilitaran la recolección de logs, estos son instalados en los equipos donde se requiere la recolección de datos. Los agentes que existen son los siguientes:
- Filebeat: Recolección de archivos de log.
- Metricbeat: Envía datos sobre las métricas de los sistemas o servicios.
- Packetbeat: Recopila datos de la red.
- Winlogbeat: Recolpila datos del sistema de eventos de Windows.
- Auditbeat: Recopila datos del sistema de auditoria de Linux.
- Hearbeat: Monitoriza el tiempo de actividad.
- Functionbeat: Son funciones para ser implementadas en el cloud (FaaS)
Los Beats pueden enviar los logs a Losgstash para ser procesados o enviarlos directamente a Elasticsearch.
Consideraciones previas a la instalación
Las características de la instalación que vamos a realizar serán:
- Está instalación no está un cluster y sólo tiene un nodo de Elasticsearch, aunque después se pueden añadir otros nodos.
- La comunicación entre los diferentes elementos del stack se cifrará mediante certificados.
- El acceso a Kibana se realizará por https
- Utilizaremos los puertos por defecto:
- 5601: Acceso a Kibana
- 5044: Puerto de escucha de Logstash para el envío de logs desde los Beats
- 9200: Puerto de escucha de Elasticsearch para el envió de logs desde Losgstash o desde los Beats directamente.
- 9300: Puerto de comunicación entre nodos de Elasticsearch
- El proceso de instalación va a constar de los siguientes pasos:
- Instalación de los elementos del stack
- Configuración de SSL, TSL y HTTPS para asegurar el stack
- Consideraciones finales
Instalación de los elementos del stack
Esta instalación se va a realizar es con las configuraciones por defecto y sobre IPv4 por lo que recomiendo desactives IPv6 para evitar que tengas problemas cuando se configuren los diferentes puertos de escucha de los servicios del stack.
Paso 1.- Instalación de java
Ejecutaremos el siguiente comando:
# apt install default-jre
Paso 2.- Añadir repositorio del ELK Stack.
Instalaremos el paquete apt-transport-https:
# apt install apt-transport-https
Descargamos el certificado para el repositorio de Elastic:
# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
Añadimos el repositorio en la lista de repositorios para apt:
# echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
# apt update
Paso 3.- Instalación Elasticsearch
Ejecutaremos el siguiente comando:
# apt install elasticseach
En Debian se crean los archivos de configuración bajo el directorio /etc/elasticsearch y los archivos del programa y datos (base de datos NoSQL) bajo el directorio /usr/share/elasticsearch
Paso 4.- Instalación de Kibana
Ejecutaremos el siguiente comando:
# apt install kibana
En Debian se crean los archivos de configuración bajo el directorio /etc/kibana y los archivos del programa bajo el directorio /usr/share/kibana
Paso 5.- Instalación de Logstash
Ejecutaremos el siguiente comando:
# apt install logstash
En Debian se crean los archivos de configuración bajo el directorio /etc/logstash y los archivos del programa bajo el directorio /usr/share/logstash
Paso 6.- Instalación Filebeat
En este ejemplo se ha seleccionado el Beat Filebeat que nos servirá de ejemplo para ver la recolección datos de los ficheros de logs del sistema. Ejecutaremos el siguiente comando:
# apt install filebeat
En Debian se crean los archivos de configuración bajo el directorio /etc/filebeat y los archivos del programa bajo el directorio /usr/share/filebeat
Ahora ya tememos todo lo necesario para poner en marcha el stack, en el próximo post indicaremos como configurarlo.