Cómo instalar Logstash en Ubuntu 18.04
Logstash es una herramienta gratuita y de código abierto, y la plataforma de análisis de registros más popular del mundo para recopilar, analizar y almacenar registros para su uso futuro. Logstash viene con un rico conjunto de plugins y un lenguaje de plantillas muy expresivo que facilita la transformación de los flujos de datos. Logstash forma parte de la pila ELK, pero también puedes utilizarlo de forma independiente. Logstash tiene la capacidad de extraer de cualquier fuente de datos utilizando plugins de entrada, aplicar una amplia variedad de transformaciones de datos y enviar los datos a un gran número de destinos utilizando plugins de salida.
En este tutorial, te mostraremos cómo instalar y configurar Logstash en un servidor Ubuntu 18.04.
Requisitos previos
- Un servidor con Ubuntu 18.04.
- Una contraseña de root configurada en tu servidor.
Cómo empezar
Antes de empezar, actualiza tu sistema con la última versión. Puedes hacerlo ejecutando el siguiente comando:
apt-get update -y
apt-get upgrade -y
Una vez actualizado tu sistema, reinícialo para aplicar los cambios.
Instalar Java
Antes de instalar Java, asegúrate de que tienes instalado Java 8 o Java 11. Puedes instalar Java 8 con el siguiente comando:
apt-get install openjdk-8-jdk -y
Después de instalar Java, comprueba la versión de Java con el siguiente comando:
java -version
Deberías ver la siguiente salida:
openjdk version "1.8.0_162" OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1-b12) OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)
Instalar Logstash
Antes de instalar Logstash, tendrás que instalar Elasticsearch en tu servidor. Por defecto, Elasticsearch no está disponible en el servidor de Ubuntu 18.04. Así que tendrás que añadir el repositorio de Elasticsearch.
Primero, instala el paquete necesario con el siguiente comando:
apt-get install apt-transport-https -y
A continuación, descarga y añade la clave GPG de Elasticsearch con el siguiente comando:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
A continuación, añade el repositorio con el siguiente comando:
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, instala Elasticsearch y Logstash con el siguiente comando:
apt-get install elasticsearch logstash -y
Una vez instalados ambos paquetes, inicia Logstash y Elasticsearch, y habilítalos para que se inicien tras el reinicio del sistema con el siguiente comando:
systemctl start logstash
systemctl enable logstash
systemctl start elasticsearch
systemctl enable elasticsearch
También puedes comprobar el estado de Logstash con el siguiente comando:
systemctl status logstash
Deberías ver la siguiente salida:
? logstash.service - logstash Loaded: loaded (/etc/systemd/system/logstash.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2019-11-20 10:13:22 UTC; 5s ago Main PID: 3790 (java) Tasks: 13 (limit: 1110) CGroup: /system.slice/logstash.service ??3790 /usr/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly Nov 20 10:13:22 ubuntu systemd[1]: Started logstash.
Por defecto, Elasticsearch escucha en el puerto 9200. Puedes comprobarlo con el siguiente comando:
netstat -ant | grep 9200
Deberías ver la siguiente salida:
tcp6 0 0 127.0.0.1:9200 :::* LISTEN tcp6 0 0 ::1:9200 :::* LISTEN
Configurar Logstash
La configuración de Logstash es una de las partes más difíciles para cualquier administrador de sistemas. La configuración de Logstash consta de tres secciones principales de configuración, Logstash Inputs, Logstash Filters y Logstash Outputs. Cada sección es responsable de diferentes funciones y utiliza diferentes plugins de Logstash.
Configurar Logstash Input
En primer lugar, tendrás que crear un archivo de configuración de entrada beats-input.conf para recibir datos de Beats en el puerto TCP 5044:
nano /etc/logstash/conf.d/beats-input.conf
Añade las siguientes líneas:
input { beats { port => 5044 } }
Guarda y cierra el archivo cuando hayas terminado.
Configurar los filtros de Logstash
A continuación, tendrás que configurar un plugin de filtros para procesar los eventos recibidos de los beats. En este caso, configuraremos los latidos para que recojan los eventos de autenticación SSH de los sistemas Ubuntu. Para ello, crea un nuevo archivo de configuración de filtros ssh-auth-filter.conf:
nano /etc/logstash/conf.d/ssh-auth-filter.conf
Añade las siguientes líneas:
filter { grok { match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}\s+%{IPORHOST:dst_host}\s+%{WORD:syslog_program}\[\d+\]:\s+(?\w+\s+password)\s+for\s+%{USER:auth_user}\s+from\s+%{SYSLOGHOST:src_host}.*" } add_field => { "activity" => "SSH Logins" } add_tag => "linux_auth" } }
Guarda y cierra el archivo cuando hayas terminado.
Configurar la salida de Logstash
A continuación, tendrás que configurar los plugins de salida para que Logstash envíe los datos de los eventos a destinos específicos.
Aquí crearemos un archivo de configuración de salida de Logstash que envíe los datos a Elasticsearch que se ejecuta en un host local.
nano /etc/logstash/conf.d/elasticsearch-output.conf
Añade las siguientes líneas:
output { elasticsearch { hosts => ["localhost:9200"] manage_template => false index => "ssh_auth-%{+YYYY.MM}" } stdout { codec => rubydebug } }
Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio Logstash para aplicar los cambios:
systemctl restart logstash
Prueba Logstash
Logstash ya está instalado y configurado. Es hora de probar si funciona o no.
Puedes verificar la configuración de Logstash con el siguiente comando:
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
Si todo está bien, deberías ver la siguiente salida:
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties [2019-11-26T06:27:48,104][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/var/lib/logstash/queue"} [2019-11-26T06:27:48,119][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/var/lib/logstash/dead_letter_queue"} [2019-11-26T06:27:50,331][INFO ][org.reflections.Reflections] Reflections took 47 ms to scan 1 urls, producing 20 keys and 40 values Configuration OK [2019-11-26T06:27:51,899][INFO ][logstash.runner ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
Enhorabuena! has instalado y configurado con éxito Logstash en el servidor Ubuntu 18.04.