Elastic Stack es una colección de Software de Código Abierto producido por Elastic, que permite buscar, analizar y visualizar registros generados desde cualquier fuente y en cualquier formato.
A nivel de sistemas, podemos utilizarlo para analizar los registros de todos nuestros servidores y ver donde hay problemas. Elastic Stack cuenta con cuatro componentes principales:
- ElasticSearch: Es un motor de búsqueda distribuido que almacena todos los datos recopilados.
- Logstash: Es un componente de procesamiento de datos de Elastic Stack que envia datos entrantes a ElasticSearch.
- Kibana: Es una interfaz web par buscar y visualizar los registros.
- Beats: Es un transportador de datos ligeros de uso único que pueden enviar datos a cientos o miles de maquinas de ElasticSearch.
En el siguiente tutorial, instalaremos las herramientas mencionadas anteriormente en una maquina con Ubuntu 20.04. También instalaremos FileBeat, un Beat que se usa para reenviar y centralizar registros y archivos. Además, también instalaremos un Nginx par Proxy Inverso ya que Kibana se tendrá que configurar en localhost.
Requisitos previos
Para seguir con el tutorial es necesario tener instalado en el servidor:
- Un servidor con Ubuntu 22.04,con 4GB de RAM y 2 CPU configuradas con un usuario sudo no root. Estos son los requisitos mínimos para ElasticSearch.
- OpenJDK 11 instalado.
- Nginx instalado en el servidor, que configuraremos más adelante como Proxy Inverso.
- También será necesario un dominio o subdominio para configurar el acceso a Kibana.
Instalación de ElasticSearch
Los componentes de ElasticSearch no se encuentran en los repositorios de Ubuntu, pero se pueden instalar por APT añadiendo los repositorios.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
Actualizaremos los repositorios:
sudo apt update
Y luego procederemos a instalarlo:
sudo apt install elasticsearch
Editaremos el fichero de configuración /etc/elasticsearch/elasticsearch.yml
y descomentaremos la siguiente línea:
network.host: localhost
Después de la instalación, habilitaremos y arrancaremos el servicio de ElasticSearch:
systemctl enable elasticsearch
systemctl start elasticsearch
Si comprobamos los puertos habilitados, veremos que ElasticSearch está utilizando el puerto 9300
:
# netstat -tulnp | grep 9300
tcp6 0 0 ::1:9300 :::* LISTEN 17464/java
tcp6 0 0 127.0.0.1:9300 :::* LISTEN 17464/java
Instalación de Kibana
Kibana es una plataforma de visualización de datos de código abierto para Elasticsearch. Instalaremos Kibana desde el mismo repositorio que Elasticsearch:
apt install kibana
Habilitaremos y arrancaremos el servicio Kibana igual que hicimos con Elasticsearch:
systemctl enable kibana
systemctl start kibana
Por defecto, Kibana se ejecuta en el puerto 5601.
# netstat -tulpn | grep 5601
tcp 0 0 127.0.0.1:5601 0.0.0.0:* LISTEN 17797/node
Instalación de Logstash
Logstash es una herramienta para la recolección, procesamiento y envío de logs y eventos. Para instalar Logstash, usaremos el mismo repositorio.
apt install logstash
A diferencia de Elasticsearch y Kibana, no iniciaremos Logstash todavía. Primero, es necesario configurar un 'pipeline' que defina específicamente cómo debe procesar los logs.
Configuración de Logstash
Los pipelines de Logstash se configuran usando archivos de configuración, que especifican inputs, filters y outputs. Crearemos un archivo de configuración básico:
nano /etc/logstash/conf.d/basic.conf
Un ejemplo de contenido podría ser:
input {
file {
path => "/var/log/*.log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
}
stdout { codec => rubydebug }
}
Este archivo de configuración básico indica a Logstash que lea los archivos de logs de una aplicación específica, los procese y los envíe a Elasticsearch ejecutándose localmente.
Después de configurar el pipeline, ahora podemos iniciar Logstash:
systemctl enable logstash
systemctl start logstash
Configuración de Nginx Proxy
Para poder acceder a la interfaz de Kibana, tendremos que configurar un Nginx Proxy que permita acceder al puerto 5601 mediante un dominio.
Para ello tendrás que seguir con el siguiente tutorial:

Accediendo por primera vez a Kibana
Una vez tengamos configurada el acceso por domino, accederemos con nuestro navegador favorito y seguiremos estos pasos:

Aquí podemos configurar un token que podemos crear en la configuración de Kibana, pero en nuestro caso utilizaremos la configuración manual. Hacemos clic en Configure manually y seguimos.

ElasticSearch lo tenemos escuchando al puerto 9200, por lo que seguiremos haciendo clic en Check Address.

El nombre de usuario deberá de ser kibana_system. Para mostrar la contraseña deberemos de ejecutar el siguiente comando:
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system
Luego marcaremos el certificado y haremos clic sobre Configure Elastic.

Nos pedirá un código de verificación que podremos obtener ejecutando el siguiente comando:
# /usr/share/kibana/bin/kibana-verification-code
Your verification code is: 535 063
Tras esto, Kibana iniciará la configuración automáticamente:

Una vez acabe y nos muestre el login podremos crearnos el usuario de la siguiente forma:
/usr/share/elasticsearch/bin/elasticsearch-users useradd [Nombre_usuario] -r kibana_user
Configuramos la contraseña y ya podremos acceder con nuestro usuario:

Comentarios