Icono del sitio Binario 0

Cómo instalar Elasticsearch, Logstash y Kibana (ELK Stack) en Ubuntu/Debian

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Artículos Guías Manuales Sistemas Linux Windows Binario 0

FacebookEmailWhatsAppLinkedInRedditXShare

Esta guía detalla el proceso para instalar y configurar Elasticsearch, Logstash y Kibana en un servidor basado en Debian o Ubuntu.

Requisitos Previos

  1. Un servidor Debian/Ubuntu actualizado con acceso sudo.
  2. Al menos 4 GB de RAM para un rendimiento básico.
  3. Configuración inicial del servidor, incluyendo la instalación de curl, wget y ufw:

    sudo apt update && sudo apt install -y curl wget apt-transport-https
  4. Instalar Java, que es necesario para Elasticsearch y Logstash:

    sudo apt install -y openjdk-11-jdk

Puedes verificar la versión instalada con:

java -version

Paso 1: Instalar Elasticsearch

Elasticsearch es un motor de búsqueda y análisis que se encargará de almacenar y consultar los registros.

  1. Agregar la clave GPG de Elasticsearch:

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  2. Agregar el repositorio:

    echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
  3. Actualizar los repositorios e instalar Elasticsearch:

    sudo apt update sudo
    apt install -y elasticsearch
  4. Configurar Elasticsearch:
    • Abre el archivo de configuración:

      sudo nano /etc/elasticsearch/elasticsearch.yml
    • Configura las siguientes opciones básicas:

      network.host: localhost
      cluster.name: my-cluster
      node.name: node-1
  5. Habilitar e iniciar Elasticsearch:

    sudo systemctl enable elasticsearch
    sudo systemctl start elasticsearch
  6. Probar Elasticsearch:

    Ejecuta este comando para verificar que está funcionando:

    curl -X GET 'http://localhost:9200'

    Deberías ver una respuesta en formato JSON con información del nodo y la versión.

Paso 2: Instalar Kibana

Kibana proporciona una interfaz gráfica para visualizar y analizar los datos almacenados en Elasticsearch.

  1. Instalar Kibana: Usa el mismo repositorio de Elasticsearch:

    sudo apt install -y kibana
  2. Configurar Kibana:
    • Edita el archivo de configuración:

      sudo nano /etc/kibana/kibana.yml
    • Establece el host del servidor como localhost:

      server.host: "localhost"
  3. Habilitar e iniciar Kibana:

    sudo systemctl enable kibana
    sudo systemctl start kibana
  4. Acceder a Kibana:

    Abre un navegador y navega a http://<IP-del-servidor>:5601.

Paso 3: Instalar Logstash

Logstash se utiliza para procesar y transformar los datos antes de enviarlos a Elasticsearch.

  1. Instalar Logstash:

    sudo apt install -y logstash
  2. Configurar Logstash:
    • Crea un archivo de configuración en /etc/logstash/conf.d/logstash.conf:

      sudo nano /etc/logstash/conf.d/logstash.conf
    • Añade un pipeline básico:

      input {
      beats {
      port => 5044
      }
      }
      filter {}
      output {
      elasticsearch {
      hosts => ["localhost:9200"]
      }
      }
  3. Habilitar e iniciar Logstash:

    sudo systemctl enable logstash
    sudo systemctl start logstash

Paso 4: Instalar Filebeat

Filebeat recopila los registros desde los servidores cliente y los envía a Logstash.

  1. Instalar Filebeat en el servidor cliente:

    sudo apt install -y filebeat
  2. Configurar Filebeat para enviar registros a Logstash:
    • Edita el archivo /etc/filebeat/filebeat.yml:

      output.logstash:
      hosts: ["<IP-Logstash>:5044"]
    • Habilita el módulo de logs del sistema:

      sudo filebeat modules enable system
  3. Probar Filebeat:

    sudo filebeat test output
  4. Habilitar e iniciar Filebeat:

    sudo systemctl enable filebeat
    sudo systemctl start filebeat

Paso 5: Configurar el Firewall

Permite el tráfico necesario para los servicios del ELK Stack:

sudo ufw allow 5601  # Kibana
sudo ufw allow 9200 # Elasticsearch
sudo ufw allow 5044 # Logstash
sudo ufw enable

Paso 6: Validar la Configuración

  1. Enviar datos de prueba a Elasticsearch:

    curl -X POST "localhost:9200/logs/_doc/" -H 'Content-Type: application/json' -d'
    {
    "message": "Prueba de Elasticsearch",
    "timestamp": "2024-11-28T00:00:00"
    }'
  2. Ver los registros en Kibana:
    • Abre Kibana, ve a la pestaña "Discover" y selecciona el índice creado (logs-*).

Paso 7: Configurar Nginx como proxy inverso para Kibana

1. Instalar Nginx

Primero, asegúrate de que Nginx esté instalado:

sudo apt update
sudo apt install -y nginx

2. Crear un archivo de usuarios para autenticación básica

  1. Genera un archivo con credenciales de usuario para proteger el acceso a Kibana:

    echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users
    • Sustituye kibanaadmin por el nombre de usuario deseado.
    • Cuando se te solicite, ingresa la contraseña para el usuario. Esta será cifrada automáticamente.
  2. Verifica el contenido del archivo generado:

    cat /etc/nginx/htpasswd.users

3. Configurar un bloque de servidor en Nginx

  1. Crea un archivo de configuración para tu dominio o subdominio en Nginx:

    sudo nano /etc/nginx/sites-available/kibana
  2. Añade la configuración siguiente al archivo:

    server {
    listen 80;

    server_name example.com;
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    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;
    }
    }
    • Sustituye example.com por tu dominio o dirección IP.
  3. Enlaza este archivo de configuración a sites-enabled:

    sudo ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
  4. Verifica la configuración de Nginx para asegurarte de que no haya errores:

    sudo nginx -t
  5. Reinicia Nginx para aplicar los cambios:

    sudo systemctl restart nginx

4. Probar la configuración

  1. Abre tu navegador y navega a http://example.com (o el dominio configurado).
  2. Deberías ver un cuadro de autenticación solicitando las credenciales.
  3. Ingresa el nombre de usuario y contraseña configurados anteriormente.

5. Opcional: Configurar HTTPS con Let’s Encrypt

Para mayor seguridad, puedes configurar HTTPS usando Let's Encrypt:

  1. Instala el cliente Certbot para Nginx:

    sudo apt install -y certbot python3-certbot-nginx
  2. Genera el certificado SSL:

    sudo certbot --nginx -d example.com
  3. Renueva automáticamente los certificados:

    sudo crontab -e

    Añade esta línea para ejecutar la renovación automáticamente:

    0 3 * * * certbot renew --quiet

Conclusión

Ahora tienes un entorno seguro donde Kibana está protegido por una capa de autenticación y redirigido a través de Nginx. Además, puedes usar HTTPS para cifrar el tráfico hacia tu servidor. Esta configuración es ideal para entornos de producción donde se manejan datos sensibles.

Salir de la versión móvil