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

Cómo instalar la pila ELK en RHEL 8

ELK stack también se conoce como Elastic stack y consta de cuatro proyectos de código abierto:Elasticsearch, Logstash, Kibana y Beats. Le ayuda a tener todos sus registros almacenados en un solo lugar y brinda la capacidad de analizar y visualizar datos o problemas al correlacionar los eventos en un momento determinado.

Esta guía lo ayuda a instalar la pila ELK en RHEL 8.

Componentes

Elasticsearch:un motor de búsqueda de texto completo de código abierto. Almacena registros entrantes de Logstash y ofrece la posibilidad de buscar registros/datos en tiempo real

Logstash:realiza el procesamiento de datos (recopilar, enriquecer y transformar) de los registros entrantes enviados por beats (reenviador) y los envía a Elasticsearch

Kibana:proporciona visualización de datos o registros de Elasticsearch.

Beats:instalado en las máquinas cliente, recopila y envía 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.

Requisitos

Instalar Java

Dado que Elasticsearch se basa en Java, debemos tener OpenJDK u Oracle JDK instalado en su máquina.

LEER: Cómo instalar Java en RHEL 8

Aquí, estoy usando OpenJDK 1.8.

yum -y install java

Verifique la versión de Java.

java -version

Salida:

openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, 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 tanto en el servidor ELK como en el cliente.

cat << EOF > /etc/yum.repos.d/elastic.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Instalar y configurar Elasticsearch

Elasticsearch es un motor de búsqueda de texto completo de código abierto que ofrece análisis y búsqueda distribuida 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-oss

Edite el archivo de configuración de Elasticsearch para

vi /etc/elasticsearch/elasticsearch.yml

Establezca el nombre del clúster, el nombre del nodo y la dirección IP de escucha según su entorno.

cluster.name: elkstack

node.name: elk.itzgeek.local

network.host: 192.168.1.10

Si configura la dirección IP de escucha, debe definir los hosts iniciales y los nodos maestros iniciales.

discovery.seed_hosts: ["elk.itzgeek.local"]

cluster.initial_master_nodes: ["elk.itzgeek.local"]

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.

curl -X GET http://192.168.1.10:9200

Salida:

{
  "name" : "elk.itzgeek.local",
  "cluster_name" : "elkstack",
  "cluster_uuid" : "yws_6oYKS965bZ7GTh0e6g",
  "version" : {
    "number" : "7.2.0",
    "build_flavor" : "oss",
    "build_type" : "rpm",
    "build_hash" : "508c38a",
    "build_date" : "2019-06-20T15:54:18.811730Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Verifique el estado del clúster ejecutando el siguiente comando.

curl -XGET '192.168.1.10:9200/_cluster/health?pretty'

Resultado:el estado del clúster debe ser verde.

{
  "cluster_name" : "elkstack",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

Instalar y configurar Logstash

Logstash es una herramienta de código abierto para administrar registros. Recopila los registros, los analiza y los almacena en Elasticsearch. Hay más de 160 complementos disponibles para Logstash, que ofrece la capacidad de procesar diferentes tipos de eventos sin trabajo adicional.

Instale el paquete Logstash.

yum -y install logstash-oss

La configuración de Logstash se puede encontrar en /etc/logstash/conf.d/ .

El archivo de configuración de Logstash consta de tres secciones: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/beats.conf

En la sección de entrada, configuraremos Logstash para escuchar en el puerto 5044 los registros entrantes de los beats (reenviador) que está instalado en las máquinas cliente.

input {
  beats {
    port => 5044
  }
}

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. Este filtro es bastante útil solo para monitorear los mensajes de syslog (/var/log/messages).

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, visite la página de grokdebugger.

En la sección de salida, definiremos la ubicación donde se almacenarán los registros, obviamente, un nodo de Elasticsearch.

output {
  elasticsearch {
    hosts => ["192.168.1.10:9200"]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
  }
}

Ahora inicie y habilite el servicio Logstash.

systemctl start logstash

systemctl enable logstash

Espere un minuto para permitir que Logstash se inicie y luego ejecute el siguiente comando para verificar si está escuchando en el puerto 5044.

netstat -antup | grep -i 5044

Salida:

tcp6       0      0 :::5044                 :::*                    LISTEN      31014/java

Puede solucionar los problemas de Logstash con la ayuda de los registros.

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-oss

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 Kibana desde máquinas externas. Para permitirlo, edite la siguiente línea y mencione la IP de su servidor ELK.

server.host: "0.0.0.0"

Quite el comentario de la siguiente línea y actualícela con la URL de la instancia de Elasticsearch.

elasticsearch.hosts: ["http://192.168.1.10:9200"]

Inicie y habilite kibana al iniciar el sistema.

systemctl start kibana

systemctl enable kibana

Compruebe si Kibana está escuchando en el puerto 5601.

netstat -antup | grep -i 5601

Salida:

tcp        0      0 0.0.0.0:5601            0.0.0.0:*               LISTEN      3631/node

Cortafuegos

Configure un firewall en el servidor ELK para recibir los registros de las máquinas cliente.

5044 – Para que Logstash reciba los registros

5061 – Para acceder a Kibana desde máquinas externas.

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.

Configure el repositorio de Elastic en la máquina cliente para obtener el paquete Filebeat.

Instale Filebeat usando el siguiente comando.

yum -y install filebeat

El archivo de configuración de Filebeat está en formato YAML, lo que significa que la sangría es muy importante. Asegúrese de utilizar la misma cantidad de espacios utilizados en la guía.

Edite el archivo de configuración de filebeat.

vi /etc/filebeat/filebeat.yml

Comente la sección output.elasticsearch: ya que no vamos a almacenar registros directamente en Elasticsearch.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]

  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"

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 192.168.1.10 en el puerto 5044 .

.   .   .

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["192.168.1.10:5044"]
.   .   .

Sobre /etc/filebeat/filebeat.yml , vería la sección de prospectores. Aquí, debe especificar qué registros deben enviarse a Logstash.

Cada prospector comienza con un personaje.

Aquí, configuraremos filebeat para enviar registros del sistema /var/log/messages al servidor de Logstash. Para ello, modifique el prospector existente en rutas sección como se muestra a continuación.

.   .   .

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/messages
    #- c:\programdata\elasticsearch\logs\*

.  .  .

Reinicie el servicio.

systemctl restart filebeat

systemctl enable filebeat

Acceder a Kibana

Acceda a Kibana utilizando la siguiente URL.

http://su-dirección-ip-ess:5601/

Obtendrías la página de inicio de Kibana. Haz clic en Explorar por mi cuenta .

En su primer acceso, debe mapear el índice de filebeat. Ir a Administración>> Patrones de índice>> Crear patrón 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 siguiente. Haz clic en Siguiente paso .

Seleccione @timestamp y luego haga clic en Crear patrón de índice .

@timestamp

Verifique sus patrones de índice y sus asignaciones.

Ahora, haz clic en Descubrir para ver los registros y realizar consultas de búsqueda.

Conclusión

Eso es todo. Ha aprendido con éxito cómo instalar ELK Stack en RHEL 8. Comparta sus comentarios en la sección de comentarios.


Cent OS
  1. Cómo instalar Elasticsearch, Logstash y Kibana (ELK Stack) en CentOS 8

  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 en CentOS/RHEL 8

  5. Cómo instalar la pila ELK en CentOS 7

Cómo configurar la pila ELK en Debian 10 / Debian 9

Cómo instalar ELK Stack en Ubuntu 18.04

Cómo instalar ELK Stack en AlmaLinux 8

Cómo instalar ELK Stack en CentOS 7

Cómo instalar ELK Stack en CentOS 8

Cómo instalar la pila ELK en Debian 8

    Nombre de host SO Dirección IP Propósito
    elk.itzgeek.local RHEL 8 192.168.1.10 Pila ELK
    cliente.itzgeek.local CentOS 7 192.168.1.20 Máquina cliente (Filebeat)