La pila ELK también se conoce como pila elástica y consta de Elasticsearch, Logstash y Kibana. Le ayuda a tener todos sus registros almacenados en un solo lugar y analizar los problemas correlacionando los eventos en un momento determinado.
Esta guía lo ayuda a instalar pila ELK en CentOS 7/RHEL 7 .
Componentes
Almacenamiento de registros – Hace el procesamiento (Recopilar, enriquecer y enviarlo a Elasticsearch) de los logs entrantes enviados por beats (forwarder).
Búsqueda elástica – Almacena registros entrantes de Logstash y brinda la capacidad de buscar registros/datos en tiempo real
Kibana – Proporciona visualización de registros.
Latidos – Instalado en máquinas cliente, envíe registros a Logstash a través del protocolo beats.
Medio ambiente
Para tener una pila ELK con todas las funciones, necesitaríamos dos máquinas para probar la recopilación de registros.
Pila ELK
Operating system : CentOS 7 Minimal IP Address : 192.168.1.10 HostName : server.itzgeek.local
Latido de archivo
Operating System : CentOS 7 Minimal IP Address : 192.168.1.20 HostName : client.itzgeek.local
Requisitos
Instalar Java
Dado que Elasticsearch se basa en Java, asegúrese de tener instalado OpenJDK u Oracle JDK en su máquina.
LEER :Cómo instalar Oracle Java 8 en CentOS 7/RHEL 7
Aquí, estoy usando OpenJDK 1.8.
yum -y install java-1.8.0 wget
Verifique la versión de Java.
java -version
Salida:
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
Configurar repositorio ELK
Importe la clave de firma de Elastic.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Configure el repositorio de Elasticsearch e instálelo.
vi /etc/yum.repos.d/elk.repo
Agregue el siguiente contenido a elk.repo archivo.
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Instalar Elasticsearch
Elasticsearch es un motor de búsqueda de código abierto que ofrece análisis y búsqueda distribuidos en tiempo real con la interfaz web RESTful. Elasticsearch almacena todos los datos enviados por Logstash y se muestran a través de la interfaz web (Kibana) a pedido de los usuarios.
Instala Elasticsearch.
yum install -y elasticsearch
Configure Elasticsearch para que se inicie durante el inicio del sistema.
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
Use CURL para verificar si Elasticsearch está respondiendo a las consultas o no.
curl -X GET http://localhost:9200
Salida:
{ "name" : "1DwGO86", "cluster_name" : "elasticsearch", "cluster_uuid" : "xboS_6K5Q2OO1XA-QJ9GIQ", "version" : { "number" : "6.4.0", "build_flavor" : "default", "build_type" : "rpm", "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" }
Instalar Logstash
Logstash es una herramienta de código abierto para administrar eventos y registros, recopila los 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 los diferentes tipos de eventos sin trabajo adicional.
Instale el paquete Logstash.
yum -y install logstash
Crear certificado SSL (Opcional)
Filebeat (Logstash Forwarder) normalmente se instala en los servidores de los clientes y utilizan un certificado SSL para validar la identidad del servidor de Logstash para una comunicación segura.
Cree un certificado SSL con el nombre de host o IP SAN.
Opción 1:(Nombre de host FQDN)
Si usa el nombre de host del servidor Logstash en la configuración de beats (reenviador), asegúrese de tener un registro A para el servidor Logstash y también asegúrese de que la máquina cliente pueda resolver el nombre de host del servidor Logstash.
Vaya al directorio de OpenSSL.
cd /etc/pki/tls/
Ahora, cree el certificado SSL. Reemplazar verde uno con el nombre de host de su servidor Logstash real.
openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt -subj /CN=server.itzgeek.local
Opción 2:(Dirección IP)
Si planea usar una dirección IP en lugar de un nombre de host, siga los pasos para crear un certificado SSL para IP SAN.
Para crear un certificado IP SAN, debe agregar una dirección IP del servidor Logstash al SubjectAltName en el archivo de configuración de OpenSSL.
vi /etc/pki/tls/openssl.cnf
Busque la sección "[ v3_ca ]" y reemplace verde uno con la IP de su servidor Logstash.
subjectAltName = IP:192.168.1.10
Ir al directorio de OpenSSL.
cd /etc/pki/tls/
Ahora, cree un certificado SSL ejecutando el siguiente comando.
openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crtEste logstash-forwarder.crt debe copiarse en todas las máquinas cliente que envían registros al servidor Logstash.
Configurar Logstash
La configuración de Logstash se puede encontrar en /etc/logstash/conf.d/ . El archivo de configuración de Logstash consta de tres secciones de entrada, filtro y salida. Las tres secciones se pueden encontrar en un solo archivo o en archivos separados que terminan en .conf.
Le recomiendo que use un solo archivo para colocar las secciones de entrada, filtro y salida.
vi /etc/logstash/conf.d/logstash.conf
En el primer apartado pondremos una entrada para la configuración de entrada. La siguiente configuración configura Logstash para escuchar en el puerto 5044 los registros entrantes de los beats (reenviador) 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:opcional.
input { beats { port => 5044 # Set to False if you do not use SSL ssl => true # Delete below linesif you do not use SSL ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } }
En la sección de filtros. Usaremos Grok para analizar los registros antes de enviarlos a Elasticsearch. El siguiente filtro grok buscará el syslog registros etiquetados 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, eche un vistazo a la página de grokdebugger.
En la sección de salida, definiremos la ubicación donde se almacenarán los registros; obviamente, debería ser Elasticsearch.
output { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
Ahora inicie y habilite el servicio Logstash.
systemctl start logstash systemctl enable logstash
Puede solucionar cualquier problema consultando los registros de Logstash.
cat /var/log/logstash/logstash-plain.log
Instalar y configurar Kibana
Kibana proporciona visualización de registros almacenados en Elasticsearch. Instale Kibana usando el siguiente comando.
yum -y install kibana
Edite el archivo kibana.yml.
vi /etc/kibana/kibana.yml
De forma predeterminada, Kibana escucha en localhost, lo que significa que no puede acceder a la interfaz de Kibana desde máquinas externas. Para permitirlo, edite la siguiente línea con la IP de su máquina.
server.host: "192.168.1.10"
Quite el comentario de la siguiente línea y actualícela con la URL de la instancia de Elasticsearch. En mi caso, es localhost.
elasticsearch.url: "http://localhost:9200"
Inicie y habilite kibana al iniciar el sistema.
systemctl start kibana systemctl enable kibana
Cortafuegos
Configure un firewall en el nodo de pila ELK para recibir los registros de las máquinas cliente.
firewall-cmd --permanent --add-port=5044/tcp firewall-cmd --permanent --add-port=5601/tcp firewall-cmd --reload
A continuación, configuraremos beats para enviar los registros al servidor de Logstash.
Instalar y configurar Filebeat
Hay cuatro beats disponibles
- Packetbeat – Analizar datos de paquetes de red.
- Filebeat – Información en tiempo real sobre los datos de registro.
- Mejores ritmos – Obtenga información de los datos de la infraestructura.
- Metricbeat – Enviar métricas a Elasticsearch.
Para analizar los registros del sistema de la máquina cliente (Ej. client.itzgeek.local), necesitamos instalar filebeat . Crea el archivo beats.repo.
vi /etc/yum.repos.d/beats.repo
Agregue el contenido a continuación al archivo de repositorio anterior.
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Ahora, instala Filebeat usando el siguiente comando.
yum -y install filebeat
Configure una entrada de host en la máquina cliente en caso de que su entorno no tenga servidor DNS .
vi /etc/hosts
Haga una entrada de host como la siguiente en la máquina cliente.
192.168.1.10 server.itzgeek.local server
Filebeat (beats) usa un certificado SSL para validar la identidad del servidor Logstash, así que copie logstash-forwarder.crt del servidor de Logstash al cliente.
Omita este paso, en caso de que no esté usando SSL en Logstash.
scp -pr [email protected]:/etc/pki/tls/certs/logstash-forwarder.crt /etc/ssl/certs/
El archivo de configuración de Filebeat está en formato YAML, lo que significa que la sangría es muy importante. Asegúrate de usar la misma cantidad de espacios que se usan en la guía.
Abre el archivo de configuración de Filebeat.
vi /etc/filebeat/filebeat.yml
En la parte superior, verá la sección de prospectores. Aquí, debe especificar qué registros deben enviarse a Logstash y cómo deben manejarse. Cada prospector comienza con – personaje.
Con fines de prueba, configuraremos filebeat para enviar /var/log/messages al servidor de Logstash. Para ello, modifique el prospector existente en rutas sección.
Comente el – /var/log/*.log para evitar enviar todos los .log archivos presentes en ese directorio a Logstash.
filebeat.inputs: - type: log # Change to true to enable this input configuration. enabled: true # Paths that should be crawled and fetched. paths: - /var/log/messages # - /var/log/*.log . . .
Comente la sección output.elasticsearch: ya que no vamos a almacenar registros directamente en Elasticsearch.
Ahora, busque la línea output.logstash y modifique las entradas como a continuación. Esta sección define filebeat para enviar registros al servidor de Logstash server.itzgeek.local en el puerto 5044 y mencione la ruta donde se encuentra el certificado SSL copiado
Reemplace server.itzgeek.local con la dirección IP en caso de que esté utilizando IP SAN .
. . . output.logstash: # The Logstash Server hosts: ["server.itzgeek.local:5044"] # Comment out this line if Logstash is not using SSL ssl.certificate_authorities: ["/etc/ssl/certs/logstash-forwarder.crt"] . . .
Reinicie el servicio.
systemctl restart filebeat
Los registros de Beats normalmente se encuentran en el archivo syslog.
cat /var/log/filebeat/filebeat
Acceder a Kibana
Acceda a Kibana utilizando la siguiente URL.
http://tu-dirección-ip:5601/Obtendrías la página de inicio de Kibana.
En su primer inicio de sesión, 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 al menos un índice de latido de archivo similar al anterior. Haz clic en Siguiente paso.
Seleccione @timestamp y luego haga clic en Ccrear .
@timestamp
Verifique sus patrones de índice y sus asignaciones.
Ahora, haga clic en Descubrir para ver los registros entrantes y realizar consultas de búsqueda.
Eso es todo.