Cómo configurar un clúster de pila elástica de varios nodos en RHEL 8/CentOS 8

Pila elástica ampliamente conocida como pila de ELKes un grupo de productos de código abierto como Elasticsearch, Logstash y kibana. Elastic Stack es desarrollado y mantenido por la empresa Elastic. Usando la pila elástica, uno puede alimentar los registros del sistema a Logstash, es un motor de recopilación de datos que acepta los registros o datos de todas las fuentes y normaliza los registros y luego los reenvía a Elasticsearch para analizando, indexación, buscando y almacenar y finalmente usando Kibana uno puede representar los datos visualizados, usando Kibana también podemos crear diagramas y gráficos interactivos basados ​​en las consultas del usuario.

Elástico-Stack-Cluster-RHEL8-CentOS8

En este artículo, demostraremos cómo configurar un clúster de pila elástica de múltiples nodos (ELK Stack) en servidores RHEL 8 / CentOS 8. Los siguientes son detalles para mi clúster de Elastic Stack:

Búsqueda elástica:
  • Tres servidores con mínimo RHEL 8/CentOS 8
  • IP y nombre de host: 192.168.56.40 (elasticsearch1.linuxtechi. local), 192.168.56.50 (elasticsearch2.linuxtechi. local), 192.168.56.60 (elasticsearch3.linuxtechi. local)
Logstash:
  • Dos servidores con mínimo RHEL 8 / CentOS 8
  • IP y nombre de host: 192.168.56.20 (logstash1.linuxtechi. local), 192.168.56.30 (logstash2.linuxtechi. local)
Kibana:
  • Un servidor con mínimo RHEL 8 / CentOS 8
  • Nombre de host – kibana.linuxtechi.local
  • IP – 192.168.56.10
Latido de archivo:
  • Un servidor con CentOS 7 mínimo
  • IP y nombre de host: 192.168.56.70 (servidor web)

Comencemos con la configuración del clúster de Elasticsearch,

Configurar un clúster de Elasticsearch de 3 nodos

Como ya dije, mantuve nodos para el clúster de Elasticsearch, inicie sesión en cada nodo, establezca el nombre de host y configure los repositorios yum/dnf.

Use el siguiente comando hostnamectl para establecer el nombre de host en los nodos respectivos,

[[email protected] ~]# hostnamectl set-hostname "elasticsearch1.linuxtechi. local"
[[email protected] ~]# exec bash
[[email protected] ~]#
[[email protected] ~]# hostnamectl set-hostname "elasticsearch2.linuxtechi. local"
[[email protected] ~]# exec bash
[[email protected] ~]#
[[email protected] ~]# hostnamectl set-hostname "elasticsearch3.linuxtechi. local"
[[email protected] ~]# exec bash
[[email protected] ~]#

Para el sistema CentOS 8, no necesitamos configurar ningún repositorio de paquetes del sistema operativo y para el servidor RHEL 8, si tiene una suscripción válida y luego la suscribió con Red Hat para obtener el repositorio de paquetes. En caso de que desee configurar el repositorio local yum/dnf para los paquetes del sistema operativo, consulte la siguiente URL:

Cómo configurar el repositorio local de Yum/DNF en el servidor RHEL 8 mediante DVD o archivo ISO

Configure el repositorio de paquetes de Elasticsearch en todos los nodos, cree un archivo elastic.repo en la carpeta /etc/yum.repos.d/ con el siguiente contenido

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

guardar y salir del archivo

Use el siguiente comando rpm en los tres nodos para importar la clave de firma pública de Elastic

~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Agregue las siguientes líneas en el archivo /etc/hosts en los tres nodos,

192.168.56.40             elasticsearch1.linuxtechi.local
192.168.56.50             elasticsearch2.linuxtechi.local
192.168.56.60             elasticsearch3.linuxtechi.local

Instale Java en los tres nodos usando el comando yum / dnf,

[[email protected] ~]# dnf install java-openjdk -y
[[email protected] ~]# dnf install java-openjdk -y
[[email protected] ~]# dnf install java-openjdk -y

Instale Elasticsearch usando el comando debajo de dnf en los tres nodos,

[[email protected] ~]# dnf install elasticsearch -y
[[email protected] ~]# dnf install elasticsearch -y
[[email protected] ~]# dnf install elasticsearch -y

Nota: En caso de que el firewall del sistema operativo esté habilitado y ejecutándose en cada nodo de Elasticsearch, permita los siguientes puertos usando el comando firewall-cmd,

~]# firewall-cmd --permanent --add-port=9300/tcp
~]# firewall-cmd --permanent --add-port=9200/tcp
~]# firewall-cmd --reload

Configure Elasticsearch, edite el archivo “/etc/elasticsearch/elasticsearch.yml” en los tres nodos y agregue lo siguiente,

~]# vim /etc/elasticsearch/elasticsearch.yml
…………………………………………
cluster.name: opn-cluster
node.name: elasticsearch1.linuxtechi.local
network.host: 192.168.56.40
http.port: 9200
discovery.seed_hosts: ["elasticsearch1.linuxtechi.local", "elasticsearch2.linuxtechi.local", "elasticsearch3.linuxtechi.local"]
cluster.initial_master_nodes: ["elasticsearch1.linuxtechi.local", "elasticsearch2.linuxtechi.local", "elasticsearch3.linuxtechi.local"]
……………………………………………

Nota: en cada nodo, agregue el nombre de host correcto en el parámetro node.name y la dirección IP en el parámetro network.host y otros parámetros seguirán siendo los mismos.

Ahora inicie y habilite el servicio Elasticsearch en los tres nodos usando el siguiente comando systemctl,

~]# systemctl daemon-reload
~]# systemctl enable elasticsearch.service
~]# systemctl start elasticsearch.service

Use el siguiente comando ‘ss’ para verificar si el nodo elasticsearch comienza a escuchar en el puerto 9200,

[[email protected] ~]# ss -tunlp | grep 9200
tcp   LISTEN  0       128       [::ffff:192.168.56.40]:9200              *:*     users:(("java",pid=2734,fd=256))                  
[[email protected] ~]#

Use los siguientes comandos curl para verificar el estado del clúster de Elasticsearch

[[email protected] ~]# curl  http://elasticsearch1.linuxtechi.local:9200
[[email protected] ~]# curl -X GET  http://elasticsearch2.linuxtechi.local:9200/_cluster/health?pretty

La salida del comando anterior sería algo así como a continuación,

Elasticsearch-cluster-estado-rhel8

El resultado anterior confirma que hemos creado con éxito un clúster de Elasticsearch de 3 nodos y que el estado del clúster también es verde.

Nota: Si desea modificar el tamaño del montón de JVM, entonces tiene que editar el archivo «/etc/elasticsearch/jvm.opciones” y cambie los siguientes parámetros que se adapten a su entorno,

Ahora pasemos a los nodos de Logstash,

Instalar y configurar Logstash

Realice los siguientes pasos en ambos nodos de Logstash,

Inicie sesión en ambos nodos y configure el nombre de host usando el siguiente comando hostnamectl,

[[email protected] ~]# hostnamectl set-hostname "logstash1.linuxtechi.local"
[[email protected] ~]# exec bash
[[email protected] ~]#
[[email protected] ~]# hostnamectl set-hostname "logstash2.linuxtechi.local"
[[email protected] ~]# exec bash
[[email protected] ~]#

Agregue las siguientes entradas en el archivo /etc/hosts en ambos nodos logstash

~]# vi /etc/hosts
192.168.56.40             elasticsearch1.linuxtechi.local
192.168.56.50             elasticsearch2.linuxtechi.local
192.168.56.60             elasticsearch3.linuxtechi.local

Guardar y salir del archivo

Configure el repositorio de Logstash en ambos nodos, cree un archivo logstash.repo en la carpeta /ete/yum.repos.d/ con el siguiente contenido,

~]# vi /etc/yum.repos.d/logstash.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Guarde y salga del archivo, ejecute el siguiente comando rpm para importar la clave de firma

~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Instale Java OpenJDK en ambos nodos usando el siguiente comando dnf,

~]# dnf install java-openjdk -y

Ejecute el siguiente comando dnf desde ambos nodos para instalar logstash,

[[email protected] ~]# dnf install logstash -y
[[email protected] ~]# dnf install logstash -y

Ahora configure logstash, realice los pasos a continuación en ambos nodos de logstash,

Cree un archivo logstash conf, para eso primero copiamos el archivo logstash de muestra en ‘/etc/logstash/conf.d/’

# cd /etc/logstash/
# cp logstash-sample.conf conf.d/logstash.conf

Edite el archivo conf y actualice el siguiente contenido,

# vi conf.d/logstash.conf

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://elasticsearch1.linuxtechi.local:9200", "http://elasticsearch2.linuxtechi.local:9200", "http://elasticsearch3.linuxtechi.local:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

En la sección de salida, en el parámetro hosts, especifique el FQDN de los tres nodos de Elasticsearch, los demás parámetros se dejan como están.

Permita el puerto logstash «5044» en el firewall del sistema operativo usando el siguiente comando firewall-cmd,

~ # firewall-cmd --permanent --add-port=5044/tcp
~ # firewall-cmd –reload

Ahora inicie y habilite el servicio Logstash, ejecute los siguientes comandos systemctl en ambos nodos

~]# systemctl start logstash
~]# systemctl eanble logstash

Use el siguiente comando ss para verificar si el servicio logstash comienza a escuchar en 5044,

[[email protected] ~]# ss -tunlp | grep 5044
tcp   LISTEN  0       128                         *:5044                *:*      users:(("java",pid=2416,fd=96))                   
[[email protected] ~]#

El resultado anterior confirma que logstash se instaló y configuró correctamente. Pasemos a la instalación de Kibana.

Instalar y configurar Kibana

Inicie sesión en el nodo Kibana, establezca el nombre de host con hostnamectl mando,

[[email protected] ~]# hostnamectl set-hostname "kibana.linuxtechi.local"
[[email protected] ~]# exec bash
[[email protected] ~]#

Edite el archivo /etc/hosts y agregue las siguientes líneas

192.168.56.40             elasticsearch1.linuxtechi.local
192.168.56.50             elasticsearch2.linuxtechi.local
192.168.56.60             elasticsearch3.linuxtechi.local

Configure el repositorio de Kibana usando lo siguiente,

[[email protected] ~]# vi /etc/yum.repos.d/kibana.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

[[email protected] ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Ejecute el siguiente comando dnf para instalar kibana,

[[email protected] ~]# yum install kibana -y

Configure Kibana editando el archivo “/etc/kibana/kibana.yml

[[email protected] ~]# vim /etc/kibana/kibana.yml
…………
server.host: "kibana.linuxtechi.local"
server.name: "kibana.linuxtechi.local"
elasticsearch.hosts: ["http://elasticsearch1.linuxtechi.local:9200", "http://elasticsearch2.linuxtechi.local:9200", "http://elasticsearch3.linuxtechi.local:9200"]
…………

Iniciar y habilitar el servicio kibana

[[email protected] ~]# systemctl start kibana
[[email protected] ~]# systemctl enable kibana

Permitir el puerto Kibana ‘5601’ en el firewall del sistema operativo,

[[email protected] ~]# firewall-cmd --permanent --add-port=5601/tcp
success
[[email protected] ~]# firewall-cmd --reload
success
[[email protected] ~]#

Acceda al portal/GUI de Kibana usando la siguiente URL:

http://kibana.linuxtechi.local:5601

Kibana-Dashboard-rhel8

Desde el panel, también podemos verificar el estado de nuestro clúster de Elastic Stack

Stack-Monitoring-Overview-RHEL8

Esto confirma que hemos configurado correctamente el clúster de Elastic Stack de varios nodos en RHEL 8/CentOS 8.

Ahora enviemos algunos registros a los nodos logstash a través de filebeat desde otros servidores Linux. En mi caso, tengo un servidor CentOS 7, enviaré todos los registros importantes de este servidor a logstash a través de filebeat.

Inicie sesión en el servidor CentOS 7 e instale el paquete filebeat usando el siguiente comando rpm,

[[email protected] ~]# rpm -ivh https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm
Retrieving https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:filebeat-7.3.1-1                 ################################# [100%]
[[email protected] ~]#

Edite el archivo /etc/hosts y agregue las siguientes entradas,

192.168.56.20             logstash1.linuxtechi.local
192.168.56.30             logstash2.linuxtechi.local

Ahora configure el filebeat para que pueda enviar registros a los nodos logstash utilizando la técnica de balanceo de carga, edite el archivo «/etc/filebeat/filebeat.yml” y agregue los siguientes parámetros,

Bajo la ‘filebeat.entradas:‘cambio de sección’habilitado: falso‘ a ‘habilitado: verdadero‘ y bajo el «caminosEl parámetro «especifica los archivos de registro de ubicación que podemos enviar a logstash. En la sección de salida de Elasticsearch, comenta»salida.elasticsearch» y anfitrión parámetro. En la sección de salida de Logstash, elimine los comentarios de «salida.logstash:» y «Hospedadores:” y agregue los dos nodos logstash en los parámetros de los hosts y también “equilibrio de carga: verdadero”.

[[email protected] ~]# vi /etc/filebeat/filebeat.yml
……………………….
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/messages
    - /var/log/dmesg
    - /var/log/maillog
    - /var/log/boot.log
#output.elasticsearch:
  #  hosts: ["localhost:9200"]

output.logstash:
    hosts: ["logstash1.linuxtechi.local:5044", "logstash2.linuxtechi.local:5044"]
    loadbalance: true
………………………………………

Inicie y habilite el servicio filebeat usando debajo de los comandos systemctl,

[[email protected] ~]# systemctl start filebeat
[[email protected] ~]# systemctl enable  filebeat

Ahora vaya a Kibana GUI, verifique si los nuevos índices son visibles o no,

Elija la opción Gestión en la barra lateral izquierda y luego haga clic en Gestión de índices en Elasticsearch,

Elasticsearch-index-management-Kibana

Como podemos ver arriba, los índices son visibles ahora, creemos un patrón de índice,

Haga clic en «Patrones de índice» de la sección Kibana, nos pedirá que creemos un nuevo patrón, haga clic en «Crear patrón de índice” y especifique el nombre del patrón como “latido de archivo

Definir-Índice-Patrón-Kibana-RHEL8

Haga clic en Siguiente paso

Escoger «marca de tiempo” como filtro de tiempo para el patrón de índice y luego haga clic en “Crear patrón de índice”

Tiempo-Filtro-Índice-Patrón-Kibana-RHEL8

filebeat-index-pattern-overview-Kibana

Ahora haga clic en Descubrir para ver el patrón de índice de filebeat en tiempo real,

Descubre-Kibana-REHL8

Esto confirma que el agente de Filebeat se configuró correctamente y podemos ver los registros en tiempo real en el panel de control de Kibana.

Eso es todo de este artículo, no dude en compartir sus opiniones y comentarios en caso de que estos pasos lo ayuden a configurar el Elastic Stack Cluster de varios nodos en el sistema RHEL 8/CentOS 8.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *