Pila ELK es una plataforma de análisis de datos con todas las funciones, consta de tres herramientas de código abierto Elasticsearch , Logstash y Kibana . Esta pila lo ayuda a almacenar y administrar registros de forma centralizada y brinda la capacidad de analizar problemas al correlacionar los eventos en un momento determinado.
Esta publicación lo guía para instalar la pila ELK en Ubuntu 18.04 /
Componentes
Búsqueda elástica – Almacena los registros entrantes de Logstash y proporciona la capacidad de buscar los registros/datos en tiempo real
Almacenamiento de registros – Procesamiento (Recopilar, enriquecer y enviar a Elasticsearch) de registros entrantes enviados por beats (forwarder).
Kibana – Proporciona visualización de eventos y registros.
Latidos – Se instala en las máquinas cliente y envía registros a Logstash o Elasticsearch a través del protocolo Beats.
Requisitos
Instalar Java
Elasticsearch requiere OpenJDK o Oracle JDK disponible en su máquina.
Aquí, para esta demostración, estoy usando OpenJDK. Instale Java usando el siguiente comando junto con wget y el paquete de soporte HTTPS para APT.
sudo apt update sudo apt install -y openjdk-8-jdk wget apt-transport-https
Compruebe la versión de Java.
java -version
Salida:
openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Si desea utilizar Oracle Java JDK, entonces lea.
LEER :Instalar Oracle Java JDK 10/8 en Ubuntu 18.04
LEER :Instalar Oracle Java JDK 8 en Ubuntu 16.04
Configurar repositorio ELK
Los paquetes de pilas ELK se pueden obtener fácilmente de Elastic CO configurando su repositorio oficial .
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Instalar Elasticsearch
Ahora instalaremos el servidor Elasticsearch, un motor de búsqueda de código abierto basado en Lucene. Proporciona un motor de búsqueda de texto completo distribuido en tiempo real y con capacidad para múltiples inquilinos con una interfaz web (HTTP) y documentos JSON sin esquema.
Instale Elasticsearch usando el siguiente comando, v6.4 al momento de escribir este artículo.
sudo apt update sudo apt install -y elasticsearch
Inicie el servicio Elasticsearch.
sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
Espere unos minutos y ejecute el siguiente comando para ver el estado de la interfaz REST de Elasticsearch.
curl -X GET http://localhost:9200
Salida:
{ "name" : "nqS7TFZ", "cluster_name" : "elasticsearch", "cluster_uuid" : "vERyh1VpR46G9T21H_3gKQ", "version" : { "number" : "6.4.0", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "595516e", "build_date" : "2018-08-17T23:18:47.308994Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
El resultado anterior confirma que Elasticsearch funciona correctamente.
Instalar Logstash
Logstash es un motor de recopilación de datos y análisis de registros de código abierto. Recopila registros, los analiza y los almacena en Elasticsearch para realizar búsquedas. Hay más de 160 complementos disponibles para Logstash, que brindan la capacidad de procesar un tipo diferente de eventos sin trabajo adicional.
sudo apt install -y logstash
Crear certificado SSL para Logstash (Opcional)
Es opcional configurar el Reenviador (Filebeat) que instalamos en las máquinas cliente para usar el certificado SSL para la transmisión segura de registros.
Cree el certificado SSL con el nombre de host o IP SAN.
Opción 1:(Nombre de host o FQDN)
Vaya al directorio de OpenSSL.
cd /etc/ssl/
Ahora, cree el certificado SSL usando OpenSSL. Reemplace server.itzgeek.local con el nombre de host de su servidor Logstash.
sudo openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout logstash-forwarder.key -out logstash-forwarder.crt -subj /CN=server.itzgeek.local
Este logstash-forwarder.crt debe copiarse a todos los servidores de clientes que envían registros al servidor logstash.
Opción 2:(Dirección IP)
Siga los pasos a continuación para crear un certificado SSL para IP SAN.
Como requisito previo, agregue la dirección IP del servidor Logstash a SubjectAltName en el archivo de configuración de OpenSSL.
sudo nano /etc/ssl/openssl.cnf
Busque [ v3_ca ] sección y actualice subjectAltName con la dirección IP de su servidor Logstash.
subjectAltName = IP:192.168.1.10
Ir al directorio de OpenSSL.
cd /etc/ssl/
Ahora, cree el certificado SSL ejecutando el siguiente comando.
sudo openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crt
Este logstash-forwarder.crt debe copiarse a todos los servidores de clientes que envían registros al servidor logstash.
Convertir SSL
Convierta la clave actual al formato PKCS8 para que Logstash funcione correctamente.
sudo openssl pkcs8 -in logstash-forwarder.key -topk8 -nocrypt -out logstash-forwarder.key.pem
Cambie el permiso del archivo a legible por todo el mundo.
sudo chmod 644 /etc/ssl/logstash-forwarder.key.pem
Configurar Logstash
La configuración de Logstash consta de tres secciones, a saber, entrada, filtro y salida. Puede poner todas las secciones en un solo archivo o en un archivo separado para cada sección, terminar con .conf .
Aquí, usaremos un solo archivo para colocar las secciones de entrada, filtro y salida. Cree un archivo de configuración en /etc/logstash/conf.d/ directorio.
sudo nano /etc/logstash/conf.d/logstash.conf
En la sección de entrada, configuraremos Logstash para escuchar en el puerto 5044 los registros entrantes, desde beats (Forwarder) que se encuentran en las máquinas cliente.
Además, agregue los detalles del certificado SSL en la sección de entrada para una comunicación segura.
input { beats { port => 5044 # Set to False if you do not SSL ssl => true # Delete below lines if no SSL is used ssl_certificate => "/etc/ssl/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key.pem" } }
En la sección de filtros. Usaremos Grok para analizar los registros antes de enviarlos a Elasticsearch, para su almacenamiento.
El siguiente filtro grok buscará registros etiquetados como syslog. e intenta analizarlos para crear un índice estructurado.
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
Para obtener más patrones de filtro GROK, eche un vistazo a aquí .
En la sección de salida, definiremos dónde se almacenarán los registros, obviamente Elasticsearch en el caso de la pila ELK.
output { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
Ahora inicie y habilite el servicio Logstash.
sudo systemctl restart logstash sudo systemctl enable logstash
Registros de Logstash:
sudo cat /var/log/logstash/logstash-plain.log
Instalar y configurar Kibana
Kibana proporciona visualización de datos almacenados en Elasticsearch. Instale Kibana usando el siguiente comando.
sudo apt install -y kibanaDe forma predeterminada, Kibana escucha en localhost, lo que significa que no puede acceder a la interfaz web de Kibana desde máquinas externas.
Para habilitar el acceso, edite /etc/kibana/kibana.yml archivo.
sudo nano /etc/kibana/kibana.yml
Realice cambios en la siguiente línea con la dirección IP de su servidor.
server.host: "192.168.1.10"
Además, algunos casos, Elasticsearch y Kibana se ejecutan en diferentes máquinas , actualice la siguiente línea con la dirección IP del servidor de Elasticsearch.
elasticsearch.url: "http://localhost:9200"
Inicie y habilite Kibana al iniciar la máquina.
sudo systemctl restart kibana sudo systemctl enable kibana
Instalar Beats
Hay cuatro clientes beat disponibles.
Packetbeat – Analizar datos de paquetes de red.
Filebeat – Perspectiva en tiempo real de los datos de registro.
Mejores ritmos – Obtenga información de los datos de la infraestructura.
Metricbeat – Envíe métricas a Elasticsearch.
Asegúrese de que las máquinas cliente puedan resolver el nombre de host del servidor Logstash. Si su entorno no tiene un servidor DNS , entonces deberá agregar una entrada de host para el servidor Logstash en la máquina cliente.
sudo nano /etc/hosts
Haga una entrada similar a la siguiente.
192.168.1.10 server.itzgeek.local
Instalar Filebeat
Filebeat es un agente de software que se ejecuta en la máquina del cliente remoto y envía registros al servidor de Logstash para analizarlos o a Elasticsearch para almacenarlos, según la configuración.
Instalar soporte HTTPS para apt.
sudo apt update sudo apt install -y apt-transport-https
Filebeat está disponible en el repositorio de Elastic, por lo que debe configurarlo para la instalación de Filebeat.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Instale Filebeat usando el siguiente comando.
sudo apt update sudo apt install -y filebeat
Configurar Filebeat
Primero, copie el archivo logstash-forwarder.crt en la máquina cliente remota.
Omita este paso, en caso de que no esté utilizando SSL en Logstash para una comunicación segura.scp -pr [email protected]:/etc/ssl/logstash-forwarder.crt /etc/ssl
Edite el archivo de configuración de filebeat /etc/filebeat/filebeat.yml para enviar registros al servidor de Logstash.
sudo nano /etc/filebeat/filebeat.yml
La siguiente configuración es enviar registros del sistema (/var/log/syslog ) al servidor de Logstash. Para esta demostración, he comentado /var/log/*.log para evitar enviar todos los registros al servidor de Logstash.
. . . filebeat.inputs: # Each - is an input. Most options can be set at the input level, so # you can use different inputs for various configurations. # Below are the input specific configurations. - type: log # Change to true to enable this input configuration. enabled: true # Paths that should be crawled and fetched. Glob based paths. paths: - /var/log/syslog #- /var/log/*.log . . .En la sección Salidas, comente la sección output.elasticsearch: ya que no vamos a almacenar registros en Elasticsearch.
Ahora, busque la línea output.logstash: y modifique las entradas para enviar registros del sistema a Logstash y también mencione la ubicación del certificado SSL.
Reemplace server.itzgeek.local con dirección IP del servidor Logstash en caso de que esté utilizando IP SAN.. . . output.logstash: hosts: ["server.itzgeek.local:5044"] # Comment out this line if you are not using SSL on Logstash server ssl.certificate_authorities: ["/etc/ssl/logstash-forwarder.crt"] . . .
Reinicie el servicio Filebeat.
sudo systemctl restart filebeat
El registro de Filebeat normalmente se encuentra en su archivo de registro.
sudo cat /var/log/filebeat/filebeat
Acceder a la interfaz de Kibana
Acceda a la interfaz web de Kibana yendo a la siguiente URL.
http://tu-dirección-ip:5601/O
http://nombre-de-su-servicio:5601Obtendrías la página de inicio de Kibana.
En su primer acceso, debe asignar el índice de filebeat. Ir a Administración>> Patrones de índice .
Escriba lo siguiente en el Patrón de índice caja.
filebeat-*
Debería ver el índice de filebeat algo como arriba. Haz clic en Siguiente paso .
Selecciona @timestamp y luego haz clic en Crear patrón de índice .
@timestamp
Consulte los patrones de índice y su asignación.
Haz clic en Descubrir en la navegación izquierda para ver los registros entrantes de las máquinas cliente.
Eso es todo.