Está en la página 1de 20

Instalación y Configuración de Elasticsearch

En primer lugar, se procede a la instalación de Elasticsearch. Para ello se deben de


seguir los siguientes pasos:

1. Actualización del Sistema Operativo


#] sudo apt update
#] sudo apt upgrade

2. Instalación de Java 11:


#] sudo apt install openjdk-11-jdk

3. Descargar y agregar la clave pública de Elasticsearch:


#] wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add –

4. Agregar el repositorio de Elasticsearch en la lista de repositorios del servidor:


#] echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a
/etc/apt/sources.list.d/elastic-7.x.list

5. Actualizar la lista de paquetes nuevos disponibles en el servidor e instalar


Elasticsearch:
#] sudo apt update
#] sudo apt install elasticsearch

A continuación, procederemos a configurar Elasticsearch:

Para ello, se edita el fichero elasticsearch.yml (por defecto se encuentra en el directorio


/etc/elasticsearch/)

Antes de comenzar a editar el fichero, es importante crear una copia de seguridad del
mismo para tener un respaldo del fichero original en caso de cometer algún error.

En este caso se ha creado a modo de backup el fichero “elasticsearch.yml.backup” con


el siguiente comando:
#] cp elasticsearch.yml elasticsearch.yml.backup

Una vez creada la copia de seguridad, se procede a editar el fichero “.yml” de


configuración:
#] sudo nano /etc/elasticsearch/elasticsearch.yml
Una vez abierto el fichero, se busca la línea que comienza con “#network.host” dentro
del apartado “Network” y se elimina el “#” para descomentarla y que produzca efecto
dicha línea en la configuración de Elasticsearch.

Debe de quedar de la siguiente manera con la IP 127.0.0.1 (IP local o loopback).


También se descomenta la línea http.port para indicar el puerto por el que se desea
poner a Elasticsearch. Por defecto usará el 9200. Con descomentarlo, evitaremos
posibles problemas de conflictos de puertos y aseguraremos la relación del puerto con
Elasticsearch.

En el apartado de “Security” añadiremos las dos siguientes líneas al final del fichero:

- xpack.security.enabled: true
- discovery.type: single-node

La línea de “xpack.security.enabled: true” sirve para habilitar la seguridad básica en


nuestra herramienta y poder acceder mediante credenciales y tener un mínimo de
autentificación por parte de los agentes y herramientas que emplearemos.

En cuanto a la línea de “discovery.type: single-node” sirve para indicar que no vamos a


configurar Elasticsearch en modo clúster y que este es el único nodo de Elasticsearch
en la infraestructura.

Para explicar lo anterior, disponemos de la siguiente URL del sitio Oficial de


Elasticsearch:
https://www.elastic.co/guide/en/elasticsearch/reference/7.16/security-minimal-
setup.html#security-create-builtin-users

En este sitio, indica paso a paso, el cómo habilitar la autentificación. No obstante,


detallo el procedimiento a continuación.
En primer lugar, como comentaba en la imagen anterior, se debe de añadir esas dos
líneas (“xpack.security.enabled: true” y “discovery.type: single-node”).

A continuación, pasamos a crear las contraseñas. Cuando se habilita la seguridad básica


(como es en este caso) solo se necesitará establecer contraseñas para Elasticsearch y
Kibana.

Con el siguiente comando procederemos a generar contraseñas aleatorias y


automáticas por consola que se pueden cambiar en un futuro si es necesario:

./bin/elasticsearch-setup-passwords auto

Para conocer estas contraseñas que nos acaba de generar, emplearemos el siguiente
comando el cual nos devolverá una lista de usuarios y contraseñas por consola:

./bin/elasticsearch-setup-passwords interactive

En este caso, las contraseñas que devuelve son las siguientes:

Changed password for user apm_system


PASSWORD apm_system = IWBSHCkucuBJ61t6VIvC

Changed password for user kibana_system


PASSWORD kibana_system = iCIBe2ttAcqwgyORAo0B

Changed password for user kibana


PASSWORD kibana = iCIBe2ttAcqwgyORAo0B

Changed password for user logstash_system


PASSWORD logstash_system = MnTCh2mr3veS2ai0LKev

Changed password for user beats_system


PASSWORD beats_system = GeJzq7RJ20BNlUT9ToRj

Changed password for user remote_monitoring_user


PASSWORD remote_monitoring_user = tI0TQR8A7UDqzxysWY29

Changed password for user elastic


PASSWORD elastic = MCJvJ35vewLG2zvETwNx
Es importante en este paso almacenar este listado de credenciales puesto que más
adelante usaremos mucho las credenciales del usuario “elastic”

Para finalizar con la configuración de Elasticsearch, solo falta iniciar el servicio con el
comando: #] sudo systemctl start elasticsearch.
También emplearemos el comando #] sudo systemctl status elasticsearch para
conocer el estado actual del servicio.

Una vez tenemos este satisfactorio resultado, habilitaremos el arranque del servicio
cada vez que se inicie el sistema con el siguiente comando:
#] sudo systemctl enable elasticsearch

Instalación y Configuración de Kibana


Para iniciar la instalación realizaremos los siguientes pasos:

1.Descargar y agregar la clave pública de Kibana:


#] wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add –

2. Agregar el repositorio de Kibana:


#] echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a
/etc/apt/sources.list.d/elastic-7.x.list

3. Actualizar la lista de paquetes disponibles en el sistema e instalar Kibana:


#] sudo apt update
#] sudo apt install Kibana

Una vez instalado Kibana pasaremos a su configuración. Nos dirigimos a la siguiente


ruta /etc/Kibana:
#] sudo cd /etc/kibana
Como en el caso de ElasticSearch, realizamos un backup del fichero kibana.yml en este
caso lo he nombrado como “kibana.yml.backup”.

Abrimos el fichero kibana.yml y descomentamos las siguientes líneas:


- server.port
- server.host

En la línea de server.port indicamos el puerto por el cual escuchará Kibana que a su vez
es con el que podremos entrar en su entorno web. El puerto será el 5601.

En cuanto a server.host indicamos “0.0.0.0” para que tome todas las interfaces de red
del sistema. Pero usaremos la interfaz enp0s1 que tiene la IP: 168.161.1.49

Una vez configurada esta parte, pasamos a la última de la configuración de Kibana.


Buscaremos la línea elasticsearch.username y la descomentamos. Tiene que quedar de
la siguiente manera:
elasticsearch.username: “kibana_system”

Esto sirve para que Kibana se pueda autentificar contra Elasticsearch con los siguientes
pasos que vamos a realizar:

1.Creamos el Kibana keystore:


#] ./bin/kibana-keystore créate

2. Añadimos la contraseña para el usuario “kibana_system” en el Kibana keystore:


#] ./bin/kibana-keystore add elasticsearch.password

Una vez realizados estos pasos, iniciamos Kibana y comprobamos el estado con los
siguientes comandos:
#] sudo systemctl start kibana
#] sudo systemctl status kibana

Como se puede observar, está “active (running)” por lo tanto, el servicio está corriendo
correctamente.

Usaremos el siguiente comando para habilitar el inicio del aplicativo en el arranque del
sistema:
#] sudo systemctl enable kibana

A continuación, procederemos a instalar los agentes que se encargarán de recoger las


métricas y los logs y pintarlos en “Kibana” de Elasticsearch que son los siguientes:
- Metricbeat
- Filebeat

Para la instalación de Filebeat y Metricbeat seguiremos los siguientes pasos:

1.Al tener ya en nuestro sistema el repositorio de instalación de Elasticsearch, también


nos viene incluido los paquetes de Filebeat y Metricbeat.
Por ello, únicamente para instalar ambos agentes ejecutaremos el siguiente comando:
#] sudo apt-get install filebeat
#] sudo apt-get install metricbeat

En este caso aparece que ya se encuentra en su versión más reciente porque ya ejecuté
el comando y están instalados.
Para la configuración de Filebeat seguiremos los siguientes pasos:
1.Nos dirigimos a la ruta /etc/filebeat donde encontraremos los módulos y archivo de
configuración:

Como viene siendo habitual en este proyecto (y como debería ser siempre) hacemos
un backup del fichero de configuración “filebeat.yml”

2. Activamos los módulos que nos van a hacer falta para que sean los encargados de
recoger los logs y mandarlos a la base de datos de Elasticsearch para que puedan
pintarse en Kibana. Para ello con el siguiente comando listamos todos los módulos
disponibles:

#] filebeat modules list

En este caso, aparecen ya módulos habilitados que son los que nos van a hacer falta.
Para habilitar dichos módulos, la forma más rápida de hacerlo es con los siguientes
comandos:

El módulo "system" en Filebeat se utiliza para recopilar y enviar información del


sistema operativo a Elasticsearch o a otro destino de almacenamiento de logs.

Algunos de los tipos de datos que se pueden recopilar con el módulo "system"
son:
- Logs del sistema operativo: Estos logs contienen información sobre
eventos del sistema operativo, como errores, advertencias y mensajes de
información. Los logs del sistema operativo pueden ayudar a identificar
problemas de rendimiento y seguridad.

- Logs de seguridad: Estos logs contienen información sobre intentos de


acceso no autorizado al sistema, como intentos de inicio de sesión fallidos
y accesos a archivos y carpetas restringidos. Los logs de seguridad pueden
ayudar a detectar intentos de intrusión y otros problemas de seguridad.

- Logs de auditoría: Estos logs contienen información sobre cambios en la


configuración del sistema y en los permisos de los usuarios. Los logs de
auditoría pueden ayudar a identificar cambios no autorizados en el sistema
y otros problemas de seguridad.

El módulo "apache" en Filebeat se utiliza para recopilar y enviar los logs de


Apache HTTP Server a Elasticsearch o a otro destino de almacenamiento de logs.
Apache es uno de los servidores web más populares y es utilizado por muchos
sitios web en todo el mundo. Los logs de Apache contienen información valiosa
sobre el tráfico de los sitios web y pueden ayudar a identificar problemas de
rendimiento, seguridad y otros problemas.

El módulo "apache" en Filebeat utiliza el módulo "apache2" en Logstash para


procesar los logs de Apache y agregar metadatos adicionales, como la URL
solicitada, el método HTTP utilizado y la dirección IP del cliente. Algunos de los
tipos de datos que se pueden recopilar con el módulo "apache" son:

- Accesos al servidor: Los logs de accesos al servidor contienen


información sobre las solicitudes que se hacen al servidor, incluyendo la
dirección IP del cliente, la URL solicitada, el método HTTP utilizado, el
código de respuesta del servidor y otros detalles.

- Errores del servidor: Los logs de errores del servidor contienen


información sobre los errores que se producen en el servidor, como errores
de sintaxis en la configuración de Apache, errores de permisos en los
archivos del servidor y otros errores relacionados con el servidor web.

- Logs de módulos: Los logs de módulos contienen información detallada


sobre los módulos de Apache que se utilizan en el servidor, incluyendo la
configuración de cada módulo y cualquier error o problema relacionado
con el módulo.
El módulo "elasticsearch" en Filebeat se utiliza para enviar los logs generados
por Filebeat a una instancia de Elasticsearch, lo que permite el análisis y la
visualización de los datos en tiempo real. Elasticsearch es un motor de búsqueda
y análisis distribuido que se utiliza para almacenar grandes cantidades de datos,
por lo que es una herramienta muy útil para el análisis de logs.
Algunas de las funcionalidades principales del módulo "elasticsearch" en
Filebeat son:

- Indexación de logs: El módulo "elasticsearch" en Filebeat permite la


indexación automática de los logs en Elasticsearch, lo que permite la
búsqueda y el análisis de los logs de manera eficiente.
- Configuración flexible: El módulo "elasticsearch" en Filebeat permite la
configuración flexible de las opciones de indexación y envío de logs a
Elasticsearch, lo que permite adaptar la configuración a las necesidades
específicas de cada caso de uso.

- Integración con Kibana: El módulo "elasticsearch" en Filebeat se integra


de manera nativa con Kibana, una herramienta de visualización y análisis
de datos que se utiliza junto con Elasticsearch para analizar y visualizar
los logs.

El módulo "kibana" en Filebeat se utiliza para enviar los logs generados por
Filebeat a una instancia de Kibana, lo que permite la visualización y el análisis de
los datos en tiempo real.

Algunas de las funcionalidades principales del módulo "kibana" en Filebeat son:

- Integración con Elasticsearch: El módulo "kibana" en Filebeat se integra


de manera nativa con Elasticsearch, lo que permite la visualización y el
análisis de los datos en tiempo real.

- Visualización de datos: El módulo "kibana" en Filebeat permite la


visualización de los datos en tiempo real a través de gráficos, tablas y
otros elementos visuales, lo que facilita el análisis y la comprensión de los
datos.

- Configuración flexible: El módulo "kibana" en Filebeat permite la


configuración flexible de las opciones de visualización y envío de logs a
Kibana, lo que permite adaptar la configuración a las necesidades
específicas de cada caso de uso.

Ahora pasamos a la configuración del fichero de filebeat. Para ello, en la ruta


/etc/filebeat editamos el fichero denominado “filebeat.yml” (al que previamente le
hemos hecho un backup)
En la parte de “Kibana” descomentamos la línea “host” y añadimos la siguiente
dirección:
http://<ip_server>:5601
Se compone de la IP de nuestro servidor más el puerto por el que pusimos
previamente a escuchar y funcionar Kibana.

A continuación, en la parte de “Filebeat inputs” vamos a definir los sitios de los cuales
queramos recibir la entrada de datos, en este caso de logs.
Para ello tenemos la línea “paths:” que es donde se indica la ruta de los logs que
queramos pintar o indicado de otro modo, la ruta de la cual queramos obtener los
datos.

Por defecto viene la siguiente ruta:


- /var/log/*.log

En este caso, se ha añadido también la siguiente ruta:


- /var/log/syslog

La primera recoge los logs de la ruta /var/log de todos los ficheros que tengan la
extensión “.log” Sin embargo, como los logs del sistema se encuentran el fichero
“syslog” que no cumplen con el patrón de extensión, debemos de añadirlo como un
extra.

De este modo, Filebeat enviará los logs de ambas rutas a la base de datos de
Elasticsearch y Kiabana mostrará dichos logs.
Para terminar con la configuración de Filebeat, necesitamos poner donde hay que
enviar esos logs.

Para ello nos dirigimos a la parte de “Elasticsearch Output” y descomentamos la línea


hosts indicando la dirección del host donde tenemos instalado Elasticsearch. En este
caso como el host es el mismo usamos la siguiente dirección: “localhost:9200”

También es necesario configurar la autentificación básica que definimos al principio


cuando configurábamos Elasticsearch y Kibana.

Usaremos las credenciales del usuario “elastic” para configurar tanto Filebeat como
Metricbeat.

En las líneas “username” y “password”, como menciono antes, usaremos las


credenciales del usuario “elastic” tal y como se refleja en la siguiente imagen para que
el agente Filebeat pueda autentificarse contra Elasticsearch y le permita enviar los
datos a su base de datos para que posteriormente, Kibana los extraiga y lo podamos
visualizar.
Una vez tenemos realizado esta configuración, guardamos el fichero e iniciaremos
Filebeat.
#] sudo systemctl start filebeat
#] sudo systemctl status filebeat

Realizaremos el mismo procedimiento para la configuración de Metricbeat:

En primer lugar, como se indicaba para Filebeat, al tener ya el repositorio para


Elasticsearch, este nos incluye los paquetes para Metricbeat.
Para instalar este agente, simplemente ejecutaremos los siguientes comandos:
#] sudo apt-get install metricbeat

A continuación, nos dirigimos a la ruta /etc/metricbeat y se realizará un backup del


fichero metricbeat.yml
Posteriormente, hay que editar el fichero metricbeat.yml para su configuración.
En la parte de “Kibana” hay que descomentar la línea “hosts” y añadir la URL de
nuestro sitio Kibana, es decir, la IP + Puerto de donde tenemos configurado Kibana.

La finalidad con la que configuramos este apartado es para indicar a Metricbeat el


destino en el cual el agente tiene que conectarse para que Kibana pueda mostrar las
métricas que Metricbeat ha recolectado. Todo esto, no funcionará si no se configura en
Metricbeat donde tiene que almacenar Elasticsearch los datos.
En este caso, será el siguiente: http://192.168.1.49:5601 de tal forma que el resultado
quedará como en la siguiente imagen:

A continuación, en la zona “Outputs”, configuraremos donde tiene que enviar


Metricbeat los datos para que Elasticsearch los almacenes y Kibana pueda visualizarlos,
de la forma en que lo hemos configurado anteriormente.

Para ello, en la línea “hosts” debemos poner la ubicación donde se encuentra


desplegado Elasticsearch, en este caso es la siguiente:
“localhost:9200”
Esto quiere decir, que se encuentra en este nodo, a través de la IP de loopback
(127.0.0.1) corriendo por el puerto 9200.

Como bien se hizo para Filebeat, hay que repetirlo para Metricbeat ya que éste
también se tiene que autentificar contra Elasticsearch ya que implementamos
anteriormente la seguridad básica. Para ello, en las líneas “username” y “password”,
añadiremos las credenciales que obtuvimos para el usuario “elastic”:

Para finalizar, iniciamos el servicio de Metricbeat con el siguiente comando:


#] sudo systemctl start metricbeat
Y vemos el estado con el comando:
#] sudo systemctl status metricbeat

Si bien recordamos para Filebeat, necesitábamos activar una serie de módulos, los
cuales eran los encargados de la recolección de datos para Filebeat. Para en este caso,
Metricbeat también necesita de la activación obligatoria de unos módulos para poder
obtener esos datos.

Los comandos para configurar los módulos de metricbeat son los siguientes:
#] metricbeat modules list
#] metricbeat modules enable <module_name>

Para este caso, deberemos tener activados los siguientes módulos:

El módulo "elasticsearch-xpack" en Metricbeat se utiliza para recopilar y enviar


datos sobre la salud, el rendimiento y la seguridad de una instancia de
Elasticsearch que está protegida por la capa de seguridad X-Pack. X-Pack es una
extensión de Elasticsearch que proporciona características adicionales de
seguridad, alertas y monitoreo para las instancias de Elasticsearch.

Algunas de las funcionalidades principales del módulo "elasticsearch-xpack" en


Metricbeat son:

- Recopilación de datos de seguridad: El módulo "elasticsearch-xpack" en


Metricbeat permite la recopilación de datos sobre la autenticación, la
autorización y el control de acceso en una instancia de Elasticsearch
protegida por X-Pack.

- Recopilación de datos de alertas: El módulo "elasticsearch-xpack" en


Metricbeat permite la recopilación de datos sobre las alertas generadas por
la capa de seguridad X-Pack, lo que facilita la detección de posibles
amenazas de seguridad.

- Recopilación de datos de rendimiento: El módulo "elasticsearch-xpack"


en Metricbeat permite la recopilación de datos sobre el rendimiento de una
instancia de Elasticsearch protegida por X-Pack, lo que facilita la
identificación de cuellos de botella y otros problemas de rendimiento.

- Recopilación de datos de monitorización: El módulo "elasticsearch-


xpack"
en Metricbeat permite la recopilación de datos de monitorización, como la
memoria y el uso de CPU, lo que permite la identificación de problemas
de recursos.

Y el módulo más importante de Metricbeat:

El módulo "system" en Metricbeat se utiliza para recopilar y enviar datos del


sistema operativo sobre el uso de CPU, memoria, redes, disco y otros recursos
del sistema. Este módulo proporciona información detallada sobre el rendimiento
y el estado del sistema operativo en el que se ejecuta Metricbeat.

Algunas de las funcionalidades principales del módulo "system" en Metricbeat


son:

- Recopilación de datos de CPU: El módulo "system" en Metricbeat


permite la recopilación de datos sobre el uso de CPU, incluyendo la carga
del sistema, los tiempos de espera y otros indicadores de rendimiento.

- Recopilación de datos de memoria: El módulo "system" en Metricbeat


permite la recopilación de datos sobre el uso de memoria, incluyendo el
uso de memoria por proceso y por sistema, la memoria disponible y otros
indicadores de rendimiento.

- Recopilación de datos de redes: El módulo "system" en Metricbeat


permite la recopilación de datos sobre el tráfico de red, incluyendo la
cantidad de datos transmitidos y recibidos, el número de conexiones
activas y otros indicadores de rendimiento.
- Recopilación de datos de disco: El módulo "system" en Metricbeat
permite la recopilación de datos sobre el uso de disco, incluyendo la
cantidad de espacio libre y utilizado, la velocidad de lectura y escritura y
otros indicadores de rendimiento.

- Recopilación de datos de procesos: El módulo "system" en Metricbeat


permite la recopilación de datos sobre los procesos en ejecución,
incluyendo el uso de CPU y memoria por proceso y otros indicadores de
rendimiento.

Una vez llegados a este punto, en nuestro navegador web preferido, escribimos en la
barra de búsquedas de direcciones URL lo siguiente: http://<ip_server>:5601 y el cual
hará una redirección al Login de Elasticsearch – Kibana

Deberá aparecer el entorno gráfico de Login de Kibana como en la siguiente imagen:


Una vez llegados a este punto, ya tenemos configurado correctamente tanto
Elasticsearch como Kibana ya que Kibana necesita que Elasticsearch esté corriendo
correctamente para conectarse a él y mostrar el entorno gráfico.

Para acceder a Elasticsearch mediante el entorno gráfico de Kibana, usaremos las


credenciales del usuario “elastic”:

Hacemos click en “Log in” y accederemos al home principal del entorno Kibana:
Ya podremos comenzar a configurar la ingesta de métricas y logs en Elasticsearch.
Configuración de ingesta de métricas y logs en Elasticsearch:

Lo primero que se realiza son la creación de los índices. Los cuales van a ser los
encargados de ser el “título” donde los agentes de metricbeat y filebeat van a enviar
las métricas y los logs.

Para la creación de estos índices, nos iremos al menú de la parte izquierda, y en la


parte inferior en el apartado de “Management” haremos clic en “Stack Management”

Una vez aquí, nos dirigimos a la parte de “Kibana” y hacemos click en “Index Patterns”
Dentro de Index Patterns deberemos de crear dos, uno para metricbeat y otro para
filebeat:

Ejemplo de creación de Index Patterns para Filebeat:

En este caso indica que ya existe porque la captura se ha tomado una vez creado el
Index Pattern.
En el Name del Index Pattern en estos casos en los cuales no se ha creado ningún
índice para la recolecta de errores, ni rollover, etc, con poner el nombre del agente que
recoge la métrica (en este caso filebeat) y un “*” ya nos aparecerá los índices a los
cuales podemos dirigirlos como viene retratado en la imagen superior. De ahí poner el
“*” para que pueda dirigirse a ambos índices que empiezan por filebeat.

Realizamos los mismos pasos para la creación del Index Pattern de Metricbeat y
obtendremos un resultado como este:

También podría gustarte