GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar la pila ELK en Debian 8

Introducción

La pila ELK es un conjunto popular de herramientas que consta de Elasticsearch, Logstash y Kibana. Estas tres herramientas forman una pila de software que puede funcionar como una herramienta de visualización de registro de servidor y análisis de datos de red centralizada extremadamente poderosa. La pila ELK también está diseñada para ser muy capaz de escalar a través de múltiples servidores para equilibrar la carga. En este instructivo, instalaremos todos los componentes de la pila ELK en un solo servidor.

Requisitos

  • Un servidor que ejecuta Debian 8. Si aún no tiene un servidor, Atlantic.net ofrece servidores de alojamiento VPS confiables que puede activar en menos de 30 segundos.

Se admiten otros sistemas operativos, pero este artículo se concentra en Debian 8.

Instalación de la pila ELK en Debian 8

Sudo

Por lo general, se desaconseja trabajar como usuario raíz desde el punto de vista de la seguridad. Usando sudo le permite ejecutar comandos que requieren privilegios de root de un usuario no root. Por defecto, Debian no incluye el sudo paquete, así que lo instalaremos.

apt-get install sudo

Luego deberá agregar la cuenta de usuario estándar a sudo grupo en el que desea poder ejecutar comandos de privilegios de root. Reemplazar <username> con el nombre de usuario de la cuenta.

adduser <username> sudo

Cierra la sesión y vuelve a iniciarla con tu nuevo usuario, y podemos continuar.

La primera vez que usas sudo en una sesión le pedirá la contraseña del usuario actual.

Instalación de Elasticsearch

Comencemos el proceso instalando Java en nuestro servidor.

Elasticsearch, el componente de indexación y búsqueda de datos de la pila ELK, requiere Java para ejecutarse. Instalaremos la versión OpenJDK 7, sin embargo, puede instalar cualquier JRE que figure en la matriz de soporte para Elasticsearch.

Primero, necesitaremos actualizar las listas de paquetes en nuestro servidor.

sudo apt-get update

Ahora podemos instalar el JRE.

sudo apt-get install openjdk-7-jre

Esta instalación puede demorar un tiempo ya que hay muchas dependencias que APT debe ordenar.

Una vez que haya terminado, podemos instalar Elasticsearch. La versión de Elasticsearch en los repositorios oficiales de Debian es muy antigua y no es compatible con las versiones más nuevas de Kibana, por lo que agregaremos el repositorio elastic.co a nuestro servidor e instalaremos Elasticsearch desde allí.

Descargue e instale la clave de firma del repositorio para elastic.co.

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

A continuación, podemos agregar el repositorio a /etc/apt/sources.list.d/ directorio.

echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/Elasticsearch-2.x.list

En este punto, debemos actualizar las listas de paquetes nuevamente, lo que agregará la versión más nueva de Elasticsearch del repositorio de elastic.co a las listas de paquetes.

sudo apt-get update

Ahora, podemos instalar Elasticsearch.

sudo apt-get install elasticsearch

También necesitaremos configurar el servicio Elasticsearch para que se inicie al iniciar el sistema.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service

¡Eso es todo! Ahora puede iniciar el servicio Elasticsearch.

sudo systemctl start elasticsearch.service

Y asegúrese de que esté activo.

systemctl status elasticsearch.service

Configuración de búsqueda elástica

En nuestro caso, no es necesario, pero si va a ejecutar Kibana y Elasticsearch en diferentes servidores (como lo hacen muchas implementaciones de ELK), deberá editar el archivo de configuración de Elasticsearch, /etc/elasticsearch/elasticsearch.yml en el servidor de Elasticsearch y agregue las siguientes dos líneas en cualquier parte del archivo:

http.cors.allow-origin: "/.*/"
http.cors.enabled: true

En el mismo archivo, agregue una línea para nombrar el clúster de Elasticsearch. El nombre predeterminado es búsqueda elástica.

cluster.name: elasticcluster

Edición del archivo de configuración de Elasticsearch

Asegúrese de no agregar líneas o espacios en blanco al archivo de configuración, ya que los archivos YAML son sensibles a los espacios en blanco.

Y luego reinicie el demonio de Elasticsearch.

sudo systemctl restart elasticsearch.service

Una vez más, asegúrese de que el demonio se esté ejecutando correctamente.

systemctl status elasticsearch.service

Estado del servicio de Elasticsearch

Instalación de Logstash

Podemos instalar Logstash, el componente de transformación y envío de registros de la pila ELK, de forma muy similar a Elasticsearch.

Si ha estado siguiendo este tutorial, ya habrá agregado la clave de firma del paquete Elastic.co. Por lo tanto, podemos omitir esa parte e inmediatamente agregar el repositorio logstash de Elastic.co a nuestro /etc/apt/sources.list.d/ .

echo "deb http://packages.elastic.co/logstash/2.0/debian stable main" | sudo tee -a /etc/apt/sources.list

Y, por supuesto, actualice las listas de paquetes.

sudo apt-get update

A continuación, podemos instalar Logstash.

sudo apt-get install logstash

Al igual que con Elasticsearch, necesitaremos habilitar Logstash al iniciar el sistema.

sudo systemctl daemon-reload
sudo systemctl enable logstash.service

Ahora podemos iniciar Logstash.

sudo systemctl start logstash.service

Y asegúrese de que se está ejecutando.

systemctl status logstash.service

¡Ahora podemos pasar a configurarlo!

Configuración de Logstash

Logstash usa archivos de configuración ubicados en /etc/logstash/conf.d . Tendremos que crear tres nuevos archivos en ese directorio ya que no hay una configuración predeterminada.

cd /etc/logstash/conf.d
sudo touch 01-input.conf 10-syslog.conf 30-lumberjack-output.conf

Usaremos el primer archivo, 01-input.conf , para especificar cómo escuchará Lumberjack los registros entrantes.

Abra el archivo para editarlo (sustituyendo el editor de texto que prefiera, si tiene alguna preferencia).

sudo editor 01-input.conf

Agrega el siguiente bloque:

input {
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "/etc/ssl/certs/logstash-forwarder.crt"
    ssl_key => "/etc/ssl/logstash-forwarder.key"
  }
}

Guarde y cierre el archivo.

No se preocupe por los certificados SSL todavía. Los generaremos en breve.

A continuación, debemos agregar una configuración de filtro a 10-syslog.conf . Un filtro puede coincidir con los mensajes entrantes (registros) y aplicar transformaciones a los datos antes de indexarlos en Elasticsearch.

Abra el archivo en su editor,

sudo editor 10-syslog.conf

y agrega lo siguiente:

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

Este filtro intercepta cualquier registro entrante que coincida con el formato estándar de syslog y luego agrega una marca de tiempo y un campo de nombre de host a cada mensaje. También extrae cierta información del mensaje de registro, como el PID de syslog, qué programa generó el mensaje y el mensaje de syslog en sí.

Será necesario escribir un nuevo filtro para cada nuevo tipo de registro que desee utilizar con Logstash/Elasticsearch.

Finalmente, podemos ir a nuestro archivo de configuración de salida, 30-lumberjack-output.conf . Este archivo contendrá un bloque de salida simple que especifica que los mensajes indexados deben enviarse a Elasticsearch y el nombre del clúster.

Abre el archivo en tu editor.

sudo editor 30-lumberjack-output.conf

Agrega el siguiente bloque:

output {
  elasticsearch {
    hosts => ["localhost"]
  }
}

Ahora comenzaremos a generar los certificados SSL para su pila ELK.

Generar certificados SSL

El protocolo Lumberjack que utiliza Logstash para comunicar los mensajes de registro está diseñado para ser seguro de extremo a extremo, y SSL es un requisito estricto. Sin embargo, no se preocupe, es bastante simple generar los certificados.

Porque estamos usando una dirección IP en lugar de un nombre de host para los servers directiva en /etc/logstash-forwarder.conf , necesitaremos agregar un campo IP SAN al certificado SSL generado. Incluya uno agregando un subjectAltName línea al archivo de configuración de OpenSSL, /etc/ssl/openssl.cnf .

sudo editor /etc/ssl/openssl.cnf

Localice la línea que contiene [ v3_ca ] e inserte la siguiente línea debajo. (Reemplace el 127.0.0.1 con la dirección IP de su servidor Logstash, si Logstash está instalado en un servidor separado).

[ v3_ca ]
subjectAltName = IP:127.0.0.1

Guarde y cierre el archivo. Ahora podemos generar el certificado SSL.

sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout /etc/ssl/logstash-forwarder.key -out /etc/ssl/certs/logstash-forwarder.crt

sudo chown logstash:logstash /etc/ssl/logstash-forwarder.key
sudo chmod 600 /etc/ssl/logstash-forwarder.key

Ahora, reinicie logstash y compruebe si se ha iniciado correctamente.

sudo systemctl restart logstash.service
systemctl status logstash.service

Estado del servicio Logstash

Incluso si se ha iniciado, verifique los archivos de registro en /var/log/logstash/logstash.* y asegúrese de que no haya errores durante el inicio.

Instalación de Logstash-Forwarder

Ahora que hemos instalado el componente del lado del servidor de Logstash, necesitamos instalar el cliente Logstash-Forwarder en cada servidor cuyos registros desee monitorear.

En este tutorial, instalaremos Logstash-Forwarder en el mismo servidor que ejecuta el resto de ELK, pero normalmente Logstash-Forwarder se ejecutaría en otros servidores.

Primero, nuevamente necesitaremos agregar un nuevo repositorio al sistema.

echo "deb http://packages.elasticsearch.org/logstashforwarder/debian stable main" | sudo tee -a /etc/apt/sources.list.d/logstash-forwarder.list

Y, de nuevo, actualice las listas de paquetes.

sudo apt-get update

Ahora, podemos instalar Logstash-Forwarder.

sudo apt-get install logstash-forwarder

Una vez completada la instalación, abra el archivo de configuración de Logstash-Forwarder.

sudo editor /etc/logstash-forwarder.conf

Borre la configuración predeterminada existente y agregue el siguiente bloque:

{
  "network": {
    "servers": [ "127.0.0.1:5000" ],
    "timeout": 15,
    "ssl ca": "/etc/ssl/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [ "/var/log/syslog", "/var/log/auth.log" ],
      "fields": { "type": "syslog" }
    }
  ]
}

Esta configuración verificará /var/log/syslog y /var/log/auth.log para nuevas entradas y luego etiquetará cada mensaje saliente de esos archivos con syslog en el type campo.

Si está instalando Logstash-Forwarder en un host separado, asegúrese de cambiar los servers directiva para incluir la dirección IP del servidor remoto. Además, asegúrese de copiar el archivo del certificado SSL en la ubicación correcta del servidor remoto.

Ahora, habilitaremos Logstash-Forwarder en el arranque.

sudo systemctl daemon-reload
sudo systemctl enable logstash-forwarder.service

Finalmente, podemos reiniciar el servicio Logstash-Forwarder para aplicar los cambios de configuración.

sudo systemctl restart logstash-forwarder.service

Si el demonio comienza bien, podemos avanzar para configurar Kibana y poner en funcionamiento la pila completa de ELK.

systemctl status logstash-forwarder.service

Estado del servicio del reenviador Logstash

Para verificar si logstash-forwarder está funcionando, observe el archivo de registro de los eventos que se están procesando.

tail -f /var/log/logstash-forwarder/*

Archivos de registro de Logstash-Forwarder

Instalando Kibana

Desafortunadamente, al momento de escribir este artículo, elastic.co no ofrece ninguna versión empaquetada de Kibana, lo que deja la administración de daemon al usuario. Tendremos que crear un archivo de servicio systemd e instalar Kibana manualmente.

Navegue hasta /opt directorio y descarga Kibana.

cd /opt
wget -qO - https://download.elastic.co/kibana/kibana/kibana-4.3.0-linux-x64.tar.gz | sudo tar -xzf -

Tendremos que crear un nuevo usuario para que Kibana se ejecute y establecer la propiedad del directorio del programa.

sudo useradd kibana
sudo chown kibana:kibana kibana-4.3.0-linux-x64/ -R

Siguiendo este paso, podemos crear el archivo de servicio systemd.

sudo touch /usr/lib/systemd/system/kibana.service

Agregue la definición de servicio al archivo.

sudo editor /usr/lib/systemd/system/kibana.service

[Unit]
Description=kibana
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
User=kibana
Group=kibana
ExecStart=/opt/kibana-4.3.0-linux-x64/bin/kibana
Restart=always
StandardOutput=null
# Connects standard error to journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Ahora necesitamos recargar todas las unidades systemd y luego habilitar el servicio Kibana.

sudo systemctl daemon-reload
sudo systemctl enable kibana.service

Ahora, podemos iniciar Kibana.

sudo systemctl start kibana.service

Verifique dos veces para asegurarse de que se está ejecutando, ¡y estamos listos!

systemctl status kibana.service

Estado del servicio de Kibana

Configuración Kibana

El archivo de configuración principal de Kibana se ubicará en /opt/kibana-4.3.0-linux-x64/config/kibana.yml . Las opciones predeterminadas deberían ser suficientes para este procedimiento, pero puede cambiar la configuración según sea necesario para su configuración.

Navegue a la dirección IP de su servidor en un navegador web, en el puerto 5601, para acceder a la página de inicialización de Kibana. Kibana le pedirá que configure un patrón de índice; seleccione received_at para el nombre del campo de tiempo y presione Create .

Crear un patrón de índice en Kibana

¡Eso es todo! Los componentes de su pila ELK (Elasticsearch, Logstash y Kibana) están instalados y operativos.

Adónde ir después

Gracias por seguir este tutorial sobre la instalación de la pila ELK en Debian 8. Vuelva a consultarnos para obtener artículos relacionados y para probar uno de nuestros servidores VPS ultrarrápidos.


Linux
  1. Cómo instalar Elasticsearch en Debian 9

  2. Cómo instalar Elasticsearch en Debian 10

  3. Cómo instalar la pila ELK en RHEL 8

  4. Cómo instalar ELK Stack en Ubuntu 16.04

  5. Cómo instalar MongoDB en Debian 11

Cómo instalar la pila LEMP en Debian 11

Cómo instalar la pila LAMP en Debian 11

Cómo instalar Go en Debian 11

Cómo instalar ELK Stack en CentOS 7

Cómo instalar ELK Stack en CentOS 8

Cómo instalar ELK Stack en Ubuntu 20.04