Instalación de Elasticsearch y Kibana en Rocky Linux. 2024.

 Instalación de Elasticsearch y Kibana en Rocky Linux. 2024.


¿Qué es Elasticsearch?

Se puede referir a Elasticsearch como un como un motor de analítica y búsqueda, este motor es de código abierto y está basado en la biblioteca Apache Laucene. Elastic llevó a cabo el primer de Elasticsearch en 2012, este mismo fue diseñado como una solución basada en Java, la cual permitiera integrar la funcionalidad de búsqueda de texto completo dentro de documentos JSON no esquemáticos.

Elasticsearch nos permite hacer uso de funciones de búsqueda tan escalables como lo necesitemos. El hacer uso de tipos de datos no estructurados obtenidos de distintas fuentes y almacenarlos en formatos propios de búsquedas, es lo que permite justamente la escalabilidad.

¿Y qué hay sobre Kibana?

Kibana es la herramienta mediante la cual podemos visualizar datos y análisis, esta herramienta forma parte del stack de Elastic. Exporar, visualizar y analizar datos almacenados dentro de Elasticsearch, son algunas de las principales funcionalidades de de Kibana.

Pues muy bien, ahora que entendimos que Elasticsearch es el servicio y Kibana es el visualizador, comencemos con el contenido del blog. En este blog, se ejemplificará la configuración completa desde 0 hasta lograr la comunicación de Elasticsearch y Kibana en un servidor o máquina con Rocky Linux.

Es importante mencionar, antes de continuar, que puedes encontrar la guía oficial dentro del sitio de Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html

Comencemos con la instalación y configuración.

PROCEDIMIENTO:

Antes de nada, como se mencionó anteriormente, Elasticsearch está basado en Java, por lo que es necesario tener una versión jdk en nuestro sistema Linux. 
Esta misma puede ser obtenida desde la fuente oficial: https://www.oracle.com/mx/java/technologies/downloads/

En esta guía, se hará uso de la versión 1.8.0_401.

 Para fines de funcionalidad de distintas herramientas basadas en java, como lo puede llegar a ser HBase, es necesario extraer nuestro java dentro de una carpeta en la ruta /usr/lib/

Por lo que lo primero, será crear la ruta necesaria y posteriormente extraer nuestro archivo java dentro de la nueva carpeta.

$sudo mkdir /usr/lib/jvm
$sudo tar -xzvf nombre_arcivo.tar.gz -C /usr/lib/jvm

El modificadoor "-C" nos permite extaer un archivo dentro de una ruta especifica, por lo que no es necesario estar dentro de la ruta deseada y mover archivos de un lado a otro.

En la figura 1, se ejemplifica el procedimiento anterior.


Figura 1. Creación de nueva carpeta y extraer el java dentro de esa carpeta.

 Este proceso tarda cerca de un minuto, y nos devuelve una vista en donde se muestran todos los paquetes que contiene el java.

Una vez termine este proceso, hay que definir la ruta en donde instalamos el Java como una variable de entorno. Esto lo podemos lograr editando el archivo /etc/profile. Hay que agregar las dos siguientes lineas al final de este archivo.

export JAVA_HOME="/usr/lib/jvm/jdk1.8.0_401"

 export PATH=”$PATH:${JAVA_HOME}/bin”

Para editar el archivo lo podemos lograr mediante el comando:

$sudo nano /etc/profile

En la figura 2 se ejemplifica el resultado del archivo ya editado.


Figura 2. Archivo /etc/profile con las modificaciones necesarias.

PUNTOS IMPORTANTES A CONSIDERAR EN ESTE PASO:

  •  El sistema por si mismo no reconoce las nuevas variables de entorno, por lo que hay que reiniciar el sistema para que sea más seguro que el sistema reconozca la nueva variable de entorno.
  • El uso del comando source, puede generar que se corrompa todo el sistema, en lo personal recomiendo no usarlo


En este punto del blog, hemos configurado la ruta y la variable de entorno de nuestra versión de JDK, es posible comprobar que lo anterior se realizó de forma correcta mediante el comando:

$echo $JAVA_HOME

Una vez se haya configurado correctamente la variable, hay que agregar nuestra versión de jdk a la lista de alternativas para java, y crear un enlace simbólico que apunte a la ruta registrada anteriormente en el /etc/profile. Así mismo, hay que establecer esa versión de java como la versión predeterminada, esto para asegurar que al ejecutar java desde cualquier usuario, use la versión especificada. En la figura 3 se ejemplifican los comandos necesarios para realizar el procedimiento anterior. 

Este procedimiento se puede realizar con los siguientes comandos:

$sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_401/bin/java" 1
$sudo update-alternatives --set java /usr/lib/jvm/jdk1.8.0_401/bin/java

En la figura 3 se ejemplifica el procedimiento anterior.

Figura 3. Procedimiento para definir la versión java como predefinida en el sistema.


En este momento, al haber realizado todo lo anterior, se puede verificar la instalación de nuestra versión de java. En la figura 4 se ejemplifica la salida satisfactoria de java en nuestro sistema.

Figura 4. Salida exitosa de la verificación de la instalación.


Una vez configurado todo lo relacionado a Java en nuestro sistema, se puede comenzar con la instalación y configuración de Elasticsearch.

En el siguiente link se puede descargar la versión oficial de Elasticsearch para sistemas que admitan RPM: https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html

El primer paso es agregar la llave GPG  a nuestro sistema y posteriormente realizar la descarga mediante la herramienta wget.

En la figura 5 se ejemplifica el proceso mencionado anteriormente:


Figura 5. Proceso de agregar llave GPG y descarga de Elasticsearch.


Una vez haya finalizado la descarga del paquete de Elasticsearch, se instala mediante el comando:

$ sudo rpm --install elasticsearch-8.15.0-x86_64.rpm 

Al finalizar el proceso de instalación, se generará una contraseña para el usuario elastic, la contraseña será usada en múltiples partes del proceso, por lo que es recomendable que sea almacenada en una variable de entorno, este procedimiento se hace con el siguiente comando:

$export ELASTIC_PASSWORD="tu_contraseña"

  • La contraseña debe ir dentro de las comillas

En la figura 6 se ejemplifica el procedimiento de exportar la contraseña.

Figura 6. Proceso de exportar la contraseña.

Una vez se haya exportado la contraseña, será necesario des comentar y editar algunas líneas del archivo /etc/elasticsearch/elasticsearch.yml 

En la figura 7 y 8 se muestran las líneas a editar:


Figura 7. Lineas modificadas y des comentadas dentro del archivo /etc/elasticsearch/elasticsearch.yml 


Figura 8. Lineas modificadas y des comentadas dentro del archivo /etc/elasticsearch/elasticsearch.yml 

Una vez se haya editado el archivo, hay que reiniciar los demonios, habilitar y arrancar el servicio de Elasticsearch.
Para llevar este proceso a cabo, hay que ejecutar una secuencia de comandos:

$sudo systemctl daemon-reload
$sudo systemctl start elasticsearch.service
$sudo systemctl enable elasticsearch.service

Finalmente, para comprobar que el servicio haya arrancado correctamente, se ejecuta el comando:

$sudo systemctl status elasticsearch.service

Lo cual, si todo salió correctamente, mostrará una salida como la que se ejemplifica en la figura 9.


Figura 9. Salida del comando sudo systemctl status elasticsearch.service cuando inició correctamente

Posteriormente, hay que habilitar el puerto definido anteriormente en el elasticsearch.yml, esto también se realiza mediante una serie de comandos:

$sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
$sudo firewall-cmd --reload
$sudo firewall-cmd --zone=public --list-ports

Para este punto, Elasticsearch ya debería estar funcionando en nuestro equipo o servidor, esto se puede comprobar mediante la herramienta curl. 

$sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200

El comando anterior, debería generar una salida como la que se muestra en la figura 10:


Figura 10. Prueba de funcionalidad de Elasticsearch.

Si bien, esto no siempre funciona a la primera, o en todas las máquinas, y regresará distintos mensajes de error. 
Por ejemplo:

{"error":{"root_cause":[{"type":"status_exception","reason":"Cluster state has not been recovered yet, cannot write to the [null] index"}],"type":"authentication_processing_error","reason":"failed to promote the auto-configured elastic password hash","caused_by":{"type":"status_exception","reason":"Cluster status"}.

Una forma de solucionarlo, es volviendo a editar el archivo /etc/elasticsearch/elasticsearch.yml como se muestra en la figura 11.


Figura 11. Modificación del elasticsearch.yml con una nueva línea.

En la figura anterior, comentó la linea que definía nuestro nodo y se modificó el modo de configuración.
Una vez editado el archivo, hay que reiniciar el servicio de Elasticsearch mediante una secuencia de comandos como la que se ejemplifica en la figura 12.


Figura 11. Secuencia de comandos para reiniciar el servicio.



Otra solución para un posible caso en el que se haya olvidado la contraseña, es hacer el curl sin el uso de los certificados, esto puede ser realizado de la siguiente forma:

$sudo curl -k -u elastic:$ELASTIC_PASSWORD https://localhost:9200

Con el modificador -k podemos evitar el uso de certificados y verificar que sea problema de la contraseña.

Llegado a este punto, ya debería estar funcionando correctamente el servicio.

Si Elasticsearch funciona correctamente, ahora se puede comenzar con la instalación de Kibana.

La instalación de Kibana, se realiza de la misma forma de la que se instaló Elasticsearch.
En el sitio oficial de Elastic, se pueden encontrar los links oficiales: https://www.elastic.co/guide/en/kibana/current/install.html 

Como primer paso se agrega la llave GPG al sistema, y se descarga el RPM con la herramienta wget.
En la figura 12 se muestra este proceso de agregar la llave y descargar el paquete.

 

Figura12. Agregar llave y descargar RPM de Kibana.

Una vez haya finalizado la descarga, se instala mediante el siguiente comando.

$sudo rpm --install kibana-8.15.0-x86_64.rpm

Al ejecutar este comando, en terminal se genera una salida como la que se muestra en la figura 13.

Figura 13. Instalación correcta de Kibana.


Al igual que la configuración de Elasticsearch, Kibana también requiere de cierta configuración.
Hay que editar el archivo /etc/kibana/kibana.yml, esto se puede hacer mediante el comando:

$sudo nano /etc/kibana/kibana.yml

En el archivo, hay que editar las líneas que se ejemplifican en la Figura 14.


Figura 14. Archivo /etc/kibana/kibana.yml editado


Como se hizo previamente en Elasticsearch, hay que reiniciar demonios, iniciar y habilitar el servicio.
Esto se realiza con la misma secuencia que se usó previamente:


$sudo systemctl daemon-reload
$sudo systemctl start kibana.service
$sudo systemctl enable kibana.service

Una vez se haya realizado lo anterior, al revisar el estatus del servicio mediante $sudo systemctl status kibana.service
Se obtiene una salida como la mencionada en la figura 15.

Figura 15. Activación correcta de kibana como servicio.


En este punto, ya se tiene configurado y funcional Elasticsearch, y Kibana ya se instaló y activó correctamente. Finalmente, hay que habilitar los puertos para poder acceder a Kibana desde cualquier otro ordenador.
Este proceso se realiza mediante la siguiente secuencia de comandos: 

$sudo firewall-cmd --zone=public --add-port=5601/tcp --permanent
$sudo firewall-cmd --reload
$sudo firewall-cmd --zone=public --list-ports

Y con esto, ya deberían estar funcionando ambos servicios de forma correcta.
Ahora es posible acceder a la interfaz que Kibana ofrece, esto se hace desde el navegador.
Basta con colocar lo siguiente en el navegador:

 ip_servidor:5601

Esto debe generar una salida como la que se ejemplifica en la figura 16.


Figura 16. Primer vista que Kibana genera al ser configurado correctamente.

Para continuar con el proceso, hay que generar un token desde la terminal, esto se hace con el comando:

$sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

Al ingresar el token que se generó, solicitará un código de verificación. tal como se ejemplifica en la figura 17.


Figura 17. Kibana solicita un código de verificación.

El comando para generar el código que nos permita acceder al sistema, se genera mediante el comando:

$sudo /usr/share/kibana/bin/kibana-verification-code

Al ingresar el código, comenzará la configuración automática de los servicios.

Al finalizar el procedimiento, hay que acceder usando la contraseña que anteriormente se guardó como variable de entorno.
En la figura 18 se ejemplifica este acceso.


Figura 18. Credenciales de acceso al sistema.

Al acceder, estaremos dentro de la interfaz de kibana, por lo que estaría listo para comenzar a usarse.
En la figura 19 se muestra el mensaje de bienvenida al servicio de Elastic.



Figura 19. Mensaje de bienvenida a Elastic.

Conclusión:

En este blog, se aprendió a instalar y configurar Elasticsearch junto a Kibana en un sistema Rocky linux, si bien no es un proceso complicado, siempre hay algunos inconvenientes que se presentan a lo largo del proceso.
Espero haya sido de útilidad, saludos.

Comentarios