Cómo instalar el software de análisis de archivos de registro Logstash en Ubuntu 20.04

ELK es una combinación de tres productos de código abierto: ElasticSearch, Logstash y Kibana. Es una de las plataformas de gestión de registros más populares en todo el mundo. Elasticsearch es un motor de búsqueda y análisis. Logstash es una canalización de procesamiento de registros que transporta los registros de varias fuentes simultáneamente, los transforma y los envía a un «almacén» como Elasticsearch. Kibana se utiliza para visualizar los datos que Logstash ha indexado en el índice de Elasticsearch

En este tutorial explicaremos cómo instalar Logstash en Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Una contraseña de root configurada en el servidor.

Instalar las dependencias necesarias

Para instalar Elasticsearch, necesitarás instalar Java en tu sistema. Puedes instalar el JDK de Java con el siguiente comando:

apt-get install openjdk-11-jdk -y

Una vez instalado, verifica la versión instalada de java con el siguiente comando:

java -version

Deberías ver la siguiente salida:

openjdk 11.0.7 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)

A continuación, instala otras dependencias necesarias ejecutando el siguiente comando:

apt-get install nginx curl gnupg2 wget -y

Una vez instaladas todas las dependencias, puedes pasar al siguiente paso.

Instalar y configurar Elasticsearch

Antes de empezar, tendrás que instalar Elasticsearch en tu sistema. Almacena los registros y eventos de Logstash y ofrece la posibilidad de buscar en los registros en tiempo real.

Primero, añade el repositorio de Elastic a tu sistema con el siguiente comando:

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list

A continuación, actualiza el repositorio e instala el Elasticsearch con el siguiente comando:

apt-get update -y
apt-get install elasticsearch -y

Una vez instalado, edita el archivo de configuración por defecto de Elasticsearch:

nano /etc/elasticsearch/elasticsearch.yml

Descomenta y cambia su valor como se muestra a continuación:

network.host: localhost  

Guarda y cierra el archivo y, a continuación, inicia el servicio Elasticsearch y permite que se inicie en el arranque con el siguiente comando:

systemctl start elasticsearch
systemctl enable elasticsearch

En este punto, Elasticsearch está instalado y escuchando en el puerto 9200. Ahora puedes comprobar si Elasticsearch funciona o no ejecutando el siguiente comando:

curl -X GET "localhost:9200"

Si todo está bien deberías ver la siguiente salida:

{
  "name" : "ubuntu2004",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "AVRzLjAbQTK-ayYQc0GaMA",
  "version" : {
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
    "build_date" : "2020-06-14T19:35:50.234439Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar y configurar Kibana

A continuación, tendrás que instalar Kibana en tu sistema. Kibana te permite analizar los datos almacenados en Elasticsearch. Puedes instalarlo simplemente ejecutando el siguiente comando:

apt-get install kibana -y

Una vez instalado Kibana, inicia el servicio Kibana y permite que se inicie en el arranque con el siguiente comando:

systemctl start kibana
systemctl enable kibana

A continuación, tendrás que crear un usuario administrativo para Kibana para acceder a la interfaz web de Kibana. Ejecuta el siguiente comando para crear el usuario administrativo de Kibana y la contraseña, y almacénalos en el archivo htpasswd.users.

echo "admin:`openssl passwd -apr1`" | tee -a /etc/nginx/htpasswd.users

Se te pedirá que proporciones la contraseña como se muestra en la siguiente salida:

Password: 
Verifying - Password: 
admin:$apr1$8d05.YO1$E0Q8QjfNxxxPtD.unmDs7/

A continuación, crea un archivo de configuración del host virtual Nginx para servir al Kibana:

nano /etc/nginx/sites-available/kibana

Añade las siguientes líneas:

server {
    listen 80;

    server_name kibana.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;
    }
}

Guarda y cierra el archivo y luego habilita el archivo de host virtual Nginx con el siguiente comando:

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/

A continuación, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

A continuación, abre tu navegador web y comprueba el estado del Kibana mediante la URL http://kibana.example.com/status. Se te pedirá que proporciones el nombre de usuario y la contraseña como se muestra a continuación:

Inicio de sesión en Kibana

Proporciona tu nombre de usuario y contraseña de Kibana, y haz clic en el botón Iniciar sesión. Deberías ver la siguiente pantalla:

Estado de Kibana

En este punto, el panel de control de Kibana está instalado en tu sistema. Ahora puedes pasar al siguiente paso.

Instalar y configurar Logstash

Logstash se utiliza para procesar los registros enviados por los beats. Puedes instalarlo ejecutando el siguiente comando:

apt-get install logstash -y

Una vez instalado Logstash, crea un nuevo archivo de configuración de latidos con el siguiente comando:

nano /etc/logstash/conf.d/02-beats-input.conf

Añade las siguientes líneas:

input {
  beats {
    port => 5044
  }
}

Guarda y cierra el archivo y luego crea un archivo de configuración de Elasticsearch con el siguiente comando

nano /etc/logstash/conf.d/30-elasticsearch-output.conf

Añade las siguientes líneas:

output {
  if [@metadata][pipeline] {
    elasticsearch {
    hosts => ["localhost:9200"]
    manage_template => false
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    pipeline => "%{[@metadata][pipeline]}"
    }
  } else {
    elasticsearch {
    hosts => ["localhost:9200"]
    manage_template => false
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    }
  }
}

Guarda y cierra el archivo y luego verifica la configuración de Logstash con este comando:

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

Si todo está bien, deberías ver la siguiente salida:

Config Validation Result: OK. Exiting Logstash

A continuación, inicia el servicio Logstash y permite que se inicie en el arranque con el siguiente comando:

systemctl start logstash
systemctl enable logstash

En este punto, Logstash está instalado en tu sistema. Ahora puedes pasar al siguiente paso.

Instalar y configurar Filebeat

La pila ELK utiliza Filebeat para recoger datos de varias fuentes y transportarlos a Logstash.

Puedes instalar Filebeat con el siguiente comando:

apt-get install filebeat -y

Una vez instalado, tendrás que configurar Filebeat para que se conecte a Logstash. Puedes configurarlo con el siguiente comando:

nano /etc/filebeat/filebeat.yml

Comenta las siguientes líneas:

#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

A continuación, descomenta las siguientes líneas:

output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

Guarda y cierra el archivo y luego habilita el módulo del sistema con el siguiente comando:

filebeat modules enable system

Por defecto, Filebeat está configurado para utilizar las rutas por defecto para los registros de syslog y de autorización.

Puedes cargar el pipeline de ingesta para el módulo del sistema con el siguiente comando:

filebeat setup --pipelines --modules system

A continuación, carga la plantilla con el siguiente comando:

filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

Deberías ver la siguiente salida:

Index setup finished.

Por defecto, Filebeat viene empaquetado con paneles de muestra de Kibana que te permiten visualizar los datos de Filebeat en Kibana. Así que tienes que desactivar la salida de Logstash y activar la de Elasticsearch. Puedes hacerlo con el siguiente comando:

filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

Deberías ver la siguiente salida:

Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true` for enabling.

Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead.
See more: https://www.elastic.co/guide/en/elastic-stack-overview/current/xpack-ml.html
Loaded machine learning job configurations
Loaded Ingest pipelines

Ahora, inicia el servicio Filebeat y habilítalo para que se inicie en el arranque con el siguiente comando:

systemctl start filebeat
systemctl enable filebeat

Accede al panel de control de Kibana

En este punto, todos los componentes de ELK están instalados y configurados. Ahora, abre tu navegador web y escribe la URL http://kibana.example.com. Deberías ver el panel de control de Kibana en la siguiente pantalla:

Panel de control de Kibana

En el panel izquierdo, haz clic en Descubrir y selecciona el patrón de índice predefinido filebeat-* para ver los datos de Filebeat en la siguiente pantalla:

Informe de datos de Filebeat

Ahora, Kibana ofrece muchas funciones. Siéntete libre de explorarlas como quieras.

Conclusión

Enhorabuena! has instalado y configurado con éxito Logstash en el servidor Ubuntu 20.04. Ahora puedes recopilar y analizar los registros del sistema desde una ubicación central. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...