En este artículo vamos a ver como desplegar el stack ELK en una maquina virtual con Ubuntu 22.04 y acceder a traves de una conexión SSL.
Requisitos del equipo
Docker
Se usará docker compose para levantar todos los contenedores del stack incluyendo un cluster de elasticsearch con 3 nodos, en caso no tenerlo instalado puedes seguir esta guía.
Nginx
Se usara como proxy reverso para redireccionar las peticiones hacia Kibana para que se pueda acceder a administrar el stack y ver las métricas del servicio, en caso no tenerlo instalado puedes seguir esta guía.
Archivos de despliegue
Adicional al archivo docker-compose.yml tengo dos archivos de configuración para establecer las claves de los servicios y para la ocnfiguración propia del Logstash.
Todos estos archivos se encuentran en un repositorio público donde pueden descargar y establecer las claves para poder desplegarlo.
RiLaRos/ELK: Deploy ELK stack on Docker (github.com)
Proceso de despliegue
Configuraciones previas
Para evitar problemas cuando se levanten los contenedores por temas de memoría se debe aumentar la memoria virtual del equipo, ya que elasticsearch lo usa para almacenar sus índices, para ello se puede hacer con el siguiente comando:
sysctl -w vm.max_map_count=262144
Ejecución del despliegue
Una vez se tengan los archivos con sus respectivas configuraciones dentro del servidor se ejecuta el siguiente comando:
docker compose up -d
Con esto se debería tener corriendo todos los contenedores con un estado healthy.
Si todo ha ido bien, al acceder con la IP y el puerto 5601 desde el navegador, se debería poder ver esta interfaz:
Configuración de acceso con SSL
Registro y configuración en Cloudflare
Para poder conectarnos a Kibana a traves de SSL vamos a hacerlo usando Cloudflare, para ello te puedes crear una cuenta gratuita y para la configuración tambien usaremos el plan gratuito, una vez dentro agreamos un nuevo site:
Al finalizar nos brindará unos DNS que debemos configurar en nuestro proveedor de dominio y se debe esperar un tiempo hasta que se valide la configuración.
Cuando se haya finalizado la validación, se deberá agregar un registro de tipo A que apunte a la IP del servidor donde hemos desplegado el stack ELK.
Con esta configuración ya se va a dirigir el tráfico del dominio al servidor, solo que aun no va a poder mostrarse la página de acceso ya que esto va a redirigir al puerto 80, pero Kibana esta ejecutandose en el puerto 5601.
Configuración del proxy reverso con Nginx
Podríamos haber publicado Kibana en el puerto 80 para que por defecto funcione la configuración previa, pero agrego esta configuración por si se tienen diferentes puertos o subdominios diferentes apuntando al mismo servidor.
Para configurar Nginx como proxy reverso vamos a seguir estos pasos:
- Crea un archivo de configuración para Nginx en
/etc/nginx/sites-available/
(por ejemplo,kibana.conf
) con el siguiente contenido (ajusta los valores según sea necesario):
server {
listen 80;
server_name sistema.dominio.com;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
2. Crea un enlace simbólico a este archivo en sites-enabled
:
sudo ln -s /etc/nginx/sites-available/kibana.conf /etc/nginx/sites-enabled/
3. Reinicia Nginx
sudo service nginx restart
4. Reiniciar Kibana
Conclusiones
Siguiendo todos estos pasos deberíamos tener configurado un dominio o subdominio con SSL que nos redirige hasta Kibana y podemos acceder a nuestro Stack, usando la clave del usuario elastic
que hemos configurado en el archivo .env
.
Referencias:
Leave a Reply