GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Elasticsearch, Logstash y Kibana (ELK Stack) en CentOS 7/RHEL 7

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.crt
Este 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.

5044 – Para que Logstash reciba los registros

5061 – Para acceder a la interfaz de Kibana desde la máquina externa.

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

  1. Packetbeat – Analizar datos de paquetes de red.
  2. Filebeat – Información en tiempo real sobre los datos de registro.
  3. Mejores ritmos – Obtenga información de los datos de la infraestructura.
  4. 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.


Cent OS
  1. Cómo instalar Elasticsearch, Logstash y Kibana 4 en CentOS 7 / RHEL 7

  2. Cómo instalar Graylog2 en CentOS 7 / RHEL 7

  3. Cómo instalar Elasticsearch en CentOS 8 / RHEL 8

  4. Cómo instalar Elasticsearch, Logstash y Kibana 4 en Ubuntu 14.04 / 15.04

  5. Cómo instalar Elasticsearch en CentOS/RHEL 8

Configure ELK Stack en Ubuntu 16.04:instale ElasticSearch, Logstash y Kibana en Ubuntu 16.04

Cómo instalar Elasticsearch, Logstash y Kibana (ELK Stack) en Ubuntu 18.04/Ubuntu 16.04

Cómo instalar ELK Stack (Elasticsearch, Logstash y Kibana) en Ubuntu 20.04

Cómo instalar ELK Stack en CentOS 7

Cómo instalar ELK Stack en CentOS 8

Cómo instalar Elasticsearch Logstash Kibana (Elastic Stack) en Ubuntu 18.04