Pila elástica ampliamente conocida como pila ELK , es 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 analizar , indexación , buscando y almacenamiento 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.
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 de 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)
Archivo de registro:
- Dos servidores con un mínimo de 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 RHEL 8/CentOS 8 mínimo
- 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"[[correo electrónico protegido] ~]# exec bash[[correo electrónico protegido] ~]#[[correo electrónico protegido] ~]# hostnamectl set-hostname "elasticsearch3.linuxtechi. local"[[correo electrónico protegido ] ~]# bash ejecutivo[[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=Repositorio de Elasticsearch para 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7. x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=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 --importar 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.local192.168.56.50 elasticsearch2.linuxtechi.local192.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 debajo del comando dnf en los tres nodos,
[[email protected] ~]# dnf install elasticsearch -y[[email protected] ~]# dnf install elasticsearch -y[[email protected] ~]# dnf install elasticsearch -y
~]# firewall-cmd --permanent --add-port=9300/tcp~]# firewall-cmd --permanent --add-port=9200/tcp~]# firewall-cmd --recargar
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-clusternode.name:elasticsearch1.linuxtechi.localnetwork.host:192.168 .56.40http.port:9200discovery.seed_hosts:["elasticsearch1.linuxtechi.local", "elasticsearch2.linuxtechi.local", "elasticsearch3.linuxtechi.local"]cluster.initial_master_nodes:["elasticsearch1.linuxtechi.local", "elasticsearch2 .linuxtechi.local", "elasticsearch3.linuxtechi.local"]………………………………………………
Ahora inicie y habilite el servicio Elasticsearch en los tres nodos usando el siguiente comando systemctl,
~]# systemctl daemon-reload~]# systemctl habilitar elasticsearch.service~]# systemctl iniciar elasticsearch.service
Use el siguiente comando 'ss' para verificar si el nodo elasticsearch comienza a escuchar en el puerto 9200,
[[correo electrónico protegido] ~]# ss -tunlp | grep 9200tcp ESCUCHAR 0 128 [::ffff:192.168.56.40]:9200 *:* usuarios:(("java",pid=2734,fd=256)) [[email] protegidoUse los siguientes comandos curl para verificar el estado del clúster de Elasticsearch
[[correo electrónico protegido] ~]# curl http://elasticsearch1.linuxtechi.local:9200[[correo electrónico protegido] ~]# curl -X GET http://elasticsearch2.linuxtechi.local:9200/_cluster/health ?bonitaLa salida del comando anterior sería algo así como a continuación,
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 almacenamiento dinámico de JVM, debe editar el archivo “/etc/elasticsearch/jvm.options ” y cambie los siguientes parámetros que se adapten a su entorno,
- -Xms1g
- -Xmx1g
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"[[correo electrónico protegido] ~]# exec bash[[correo electrónico protegido] ~]#
Agregue las siguientes entradas en el archivo /etc/hosts en ambos nodos logstash
~]# vi /etc/hosts192.168.56.40 elasticsearch1.linuxtechi.local192.168.56.50 elasticsearch2.linuxtechi.local192.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=Repositorio de Elasticsearch para paquetes 7.xbaseurl=https://artifacts.elastic.co/packages/7. x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md
Guarde y salga del archivo, ejecute el siguiente comando rpm para importar la clave de firma
~]# rpm --importar https://artifacts.elastic.co/GPG-KEY-elasticsearch
Instale Java OpenJDK en ambos nodos usando el siguiente comando dnf,
~]# dnf instalar 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.confinput { late { port => 5044 }}output { elasticsearch { hosts => ["http://elasticsearch1.linuxtechi.local:9200", "http://elasticsearch2. linuxtechi.local:9200", "http://elasticsearch3.linuxtechi.local:9200"] índice => "%{[@metadata][beat]}-%{[@metadata][versión]}-%{+ AAAA.MM.dd}" #usuario => "elástico" #contraseña => "cambiarme" }}
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,
~ # cortafuegos-cmd --permanente --add-port=5044/tcp~ # cortafuegos-cmd –recargar
Ahora inicie y habilite el servicio Logstash, ejecute los siguientes comandos systemctl en ambos nodos
~]# systemctl iniciar logstash~]# systemctl eanble logstash
Use el siguiente comando ss para verificar si el servicio logstash comienza a escuchar en 5044,
[[correo electrónico protegido] ~]# ss -tunlp | grep 5044tcp LISTEN 0 128 *:5044 *:* usuarios:(("java",pid=2416,fd=96))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 de Kibana, configure 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.local192.168.56.50 elasticsearch2.linuxtechi.local192.168.56.60 elasticsearch3.linuxtechi.localConfigure el repositorio de Kibana usando lo siguiente,
[[email protected] ~]# vi /etc/yum.repos.d/kibana.repo[elasticsearch-7.x]name=Elasticsearch repositorio para paquetes 7.xbaseurl=https://artifacts.elastic.co /packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md[[email protected] ~]# rpm --import https:// artefactos.elastic.co/GPG-KEY-elasticsearchEjecute el siguiente comando dnf para instalar kibana,
[[email protected] ~]# yum install kibana -yConfigure 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 kibanaPermitir el puerto Kibana '5601' en el firewall del sistema operativo,
[[correo electrónico protegido] ~]# firewall-cmd --permanent --add-port=5601/tcpsuccess[[correo electrónico protegido] ~]# firewall-cmd --reloadsuccess[[correo electrónico protegido] ~]#Acceda al portal/GUI de Kibana usando la siguiente URL:
http://kibana.linuxtechi.local:5601
Desde el panel, también podemos verificar el estado de nuestro clúster de Elastic Stack
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.rpmRecuperando https://artifacts.elastic.co/downloads /beats/filebeat/filebeat-7.3.1-x86_64.rpmPreparando... ############################### [100%]Actualizando/instalando... 1:filebeat-7.3.1-1 ############################## ## [100%][[correo electrónico protegido] ~]#Edite el archivo /etc/hosts y agregue las siguientes entradas,
192.168.56.20 logstash1.linuxtechi.local192.168.56.30 logstash2.linuxtechi.localAhora 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,
Debajo de 'filebeat.inputs: ' cambio de sección 'habilitado:falso ' a 'habilitado:verdadero ' y bajo los "caminos ” especifique los archivos de registro de ubicación que podemos enviar a logstash. En la sección de salida de Elasticsearch comente “output.elasticsearch ” y anfitrión parámetro. En la sección de resultados de Logstash, elimine los comentarios de “output.logstash: ” y “hosts: ” y agregue los dos nodos logstash en los parámetros de los hosts y también “loadbalance:true ”.
[[email protected] ~]# vi /etc/filebeat/filebeat.yml………………………….filebeat.inputs:- tipo:log habilitado: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"] equilibrio de carga:verdadero…………………………………………Inicie y habilite el servicio filebeat usando debajo de los comandos systemctl,
[[email protected] ~]# systemctl start filebeat[[email protected] ~]# systemctl enable filebeatAhora 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,
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 “filebeat ”
Haga clic en Siguiente paso
Elija "Marca de tiempo ” como filtro de tiempo para el patrón de índice y luego haga clic en “Crear patrón de índice”
Ahora haga clic en Descubrir para ver el patrón de índice de filebeat en tiempo real,
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 un clúster de pila elástica multinodo en el sistema RHEL 8/CentOS 8.