Wazuh - Problema Elasticsearch: "Cannot connect to the Elasticsearch cluster - See the Kibana logs for details and try reloading the page"

Wazuh - Problema Elasticsearch: "Cannot connect to the Elasticsearch cluster - See the Kibana logs for details and try reloading the page"

Introducción

En el presente blog se demuestra como se resolvió el error "Cannot connect to the Elasticsearch cluster - See the Kibana logs for details and try reloading the page". Esto se debe a que Kibana no se puede conectar con el servidor Elasticsearch . Como consecuencia, al momento de acceder a la interfaz de Kibana , aparecerá la siguiente leyenda:

wazuh-problema-kibana1.jpg

Este error se presenta cuando existe un inconveniente en el funcionamiento de Kibana y Elasticsearch, pero no en Wazuh . Básicamente, es Kibana quien no se puede conectar a Elasticsearch, dado que su servicio no se encuentra operativo.

Solución

El objetivo es aumentar la cantidad de memoria que tiene permitido usar Elasticsearch, obviamente se debe disponer de este recurso (memoria RAM) en el server donde esta montado Wazuh. El primer paso es editar el archivo /etc/elasticsearch/elasticsearch.yml , para ello se abre con algun editor de texto: kibana-3.png Luego debemos ubicar las líneas donde se declara la variable "bootstrap.memory_lock". Notar que se puede buscar esta cadena de caracteres con el buscador de cualquier editor de texto. En principio esta variable se encuentra comentada, por tanto no tiene efecto su valor ni declaración. Como se ve a continuación:

kibana-4.png Se debe descomentar la línea donde se define la variable "bootstrap.memory_lock", mediante, borrar el carácter numeral al principio de la línea. Quedando asi: kibana-5.png Como segundo paso, se va a configurar la memoria en uso. Para esto, se debe abrir el archivo /etc/default/elesticsearch con cualquier editor de texto, nano en mi caso:

kibana-6.png Luego nos dirigimos a la línea donde se declaran las varaibles: "MAX_OPEN_FILES" y "MAX_LOCKED_MEMORY", y procedemos a descomentar amabas líneas.

kibana-8.png

Luego agregamos una nueva variable, la cual es: "ES_HEAP_SIZE", de la siguiente manera:

kibana-9.png


El tercer paso es modificar el archivo "/etc/security/limits.conf" ,para ello abrimos este archivo con algún editor de texto y agregamos las variables: "elasticsearch - nofile" y "elasticsearch - memlock" de la siguiente manera:

kibana-11.png

El cuarto paso es modificar la variable: "ES_HEAP_SIZE", la cual se encuentra en el archivo: "etc/default/elasticsearch". Se debe asignar un valor de 8g, para poder contar con esta cantidad de memoria disponible, como se puede ver a continuación:

kibana-13.png

El quinto paso es editar la variable "Environment=ES_HEAP_SIZE=8G", la cual se debe encontrar en el archivo: "/usr/lib/systemd/system/elasticsearch.service". Quedando como se ve a continuación:

kibana-15.png

Por ultimo es necesario reiniciar el servidor, o bien reiniciar los servicios involucrados. En este caso, se reiniciará el servidor.

kibana-16.png

Causa

El principal problema que representa este error, es que el motor de Elasticsearch no dispone de la suficiente memoria RAM para poder poder trabajar correctamente, gracias a que la consulta que se le esta haciendo requiere de una mayor cantidad de memoria siendo imposible de responder con los recursos actuales.

kibana-1.png

kibana-2.png