Enviado por juanonlab el Sáb, 20/06/2020 - 16:14
Banner elastic

El uso que se puede dar a este fantástico motor de búsqueda es muy variado. En esta primera entrada hablaré del proceso de instalación de los componentes: elasticsearch, kibana y filebeat. 

Hay que reconocerle al creador del producto el esmero que presenta en su documentación y en sus webs para explicar que se puede obtener de su producto. Dejo un enlace que explica de manera muy sencilla las utilidades de este producto.

¿Qué es Elasticsearch?

En esta entrada explico el proceso de instalación del stack de elasticsearch 7.8.0. Durante casi dos años he trabajado con la versión 6 del producto. He instalado el producto en una distribución Ubuntu 18.04.

Se van a instalar como se ha comentado anteriormente 3 productos. El orden de instalación es importante:

  • Elasticsearch: el motor de búsqueda con los datos que se van guardando en él.
  • Kibana: aplicación web gráfica para mostrar la información que contiene elasticsearch.
  • filebeat: aplicación que va a pasar los datos de logs del sistema y/o servidores web hacia el motor elasticsearch.

Es necesario disponer de al menos la version 11 de Java (SDK) instalada en el sistema.

 

Instalación Elasticsearch

Para realizar la instalación de manera correcta se va a añadir el repositorio de elasticsearch en versión 7. Es necesario lanzar los siguientes comandos en la consola de ubuntu:

sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update

Ahora se pasa a instalar el paquete lanzando:

sudo apt-get install elasticsearch

Una vez que se ha instalado se edita el fichero de configuración de elasticsearch (elasticsearch.yml). Para ello se lanza:

sudo nano /etc/elasticsearch/elasticsearch.yml

Me gusta que visualmente en kibana se tenga un nombre de cluster adecuado así que una vez abierto el fichero hay que descomentar la propiedad cluster.name y se escribe en ella el nombre que se desee. En mi caso he puesto juanonlab-cluster.

# Use a descriptive name for your cluster:
#
cluster.name: juanonlab-cluster
#

En la siguiente captura se puede observar como queda en Kibana este nombre (una vez que se instale).

Cluster Kibana

Ahora hay que añadir el siguiente comando para que al reiniciar el servidor arranque de manera automática:

sudo systemctl enable elasticsearch

Para lanzarlo:

sudo systemctl start elasticsearch

Para comprobar su estado:

sudo systemctl status elasticsearch

La salida debe ser parecida a esta:

root@juanonlabserver:~# sudo systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-06-28 12:37:03 CEST; 4h 3min ago
     Docs: https://www.elastic.co
 Main PID: 5746 (java)
    Tasks: 76 (limit: 4915)
   CGroup: /system.slice/elasticsearch.service
           ├─5746 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10
           └─5946 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

Otra manera de comprobar que el motor está funcionando es lanzar el comando:

 
curl -X GET "localhost:9200"

Si todo es correcto se muestra la version, el cluster, el uuid y ciertas propiedades

{
  "name" : "juanonlabserver",
  "cluster_name" : "juanonlab-cluster",
  "cluster_uuid" : "4Tg7uLcRRiqPRWGCNnXe6Q",
  "version" : {
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
    "build_date" : "2020-06-14T19:35:50.234439Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

 

Instalación Kibana

Kibana nos va a permitir visualizar los datos que se han ido almacenando en elasticsearch.

Para instalar Kibana:

 
sudo apt install kibana

Antes de lanzar el programa voy a realizar una modificación propia de mi entorno. Yo dispongo de un servidor nginx que realiza la función de proxy inverso y que va a redireccionar hacia Kibana (que se instala como localhost). Si la instalación se va a realizar en local no es necesario realizar este paso ya que kibana queda instalado en localhost:5601.

 

Habilitar basePath y autenticación básica en nginx (Opcional)

Editar el fichero kibana.yml para cambiar el base path (no necesario si se va a instalar el servidor sólo en local):

sudo nano /etc/kibana/kibana.yml

Dentro del fichero descomentar el base path indicando la ruta que va a tener kibana. En mi caso también se llama kibana.

# Enables you to specify a path to mount Kibana at if you are running behind a proxy.
# Use the `server.rewriteBasePath` setting to tell Kibana if it should remove the basePath
# from requests it receives, and to prevent a deprecation warning at startup.
# This setting cannot end in a slash.
server.basePath: "/kibana"

Puedes obtener más información en el hilo de reverse-proxy de kibana.

Si además quieres añadir seguridad a tu servidor nginx cuando redireccione hacia kibana puede consultar esta funcionalidad en la entrada de restricción de acceso de nginx que se encuentra en el propio servidor (restricción básica).

 

Habilitar en el arranque y lanzar kibana

Para habilitar que kibana arranque cuando se reinicie el servidor linux:

sudo systemctl enable kibana

Para iniciar la aplicación:

 
sudo systemctl start kibana

Comprobar el estado de kibana

Una vez arrancado kibana tardará un tiempo en conectar con elasticsearch. Una vez que se han esperado unos minutos se puede observar si está funcionando mediante el comando:

curl -XGET 'http://localhost:5601/status'

En la siguiente captura se muestra como se accede a kibana a través de un proxy inverso. Lo tengo protegido con contraseña

Base path kibana

 

Instalación Filebeat

Filebeat es la herramienta que va a permitir el paso de logs del sistema y de los servidores hacia elasticsearch. De manera muy resumida las acciones son:

  • Filebeat: envía los logs al motor de elasticsearch
  • Elasticsearch: guarda los datos que recibe de filebeat
  • Kibana: muestra de manera gráfica los datos que se encuentran alojados en Elasticsearch

Para instalar Filebeat es necesario lanzar el comando:

sudo apt-get install filebeat

A continuación se muestran una serie de órdenes para administrar los módulos que enviarán información a Elasticsearch.

En mi caso tengo 4 módulos habilitados:

  • apache2
  • kibana
  • nginx
  • system

Mediante el comando:

filebeat modules list

Se listan los comandos habilitados y los disponibles:

Enabled:
apache2
kibana
nginx
system

Disabled:
activemq
apache
auditd
aws
azure
..

Por ejemplo, para deshabilitar el módulo system:

filebeat modules disable system

Y para habilitarlo:

filebeat modules disable system

Kibana por defecto no dispone informes (llamados dashboards). Para crearlos en kibana basta con lanzar el comando:

filebeat setup --dashboards

Se puede encontrar más información sobre los dashboards en la entrada de carga de dashboards en kibana.

En la siguiente captura se muestran los dos dashboards de nginx disponibles.

Dashboards nginx

Conclusión

Instalar las 3 herramientas lleva un tiempo pero una vez realizado ya se puede hacer uso de este magnífico motor de búsqueda. En la próxima entrada daré un repaso a los dashboards que utilizo para monitorizar mi servidor. Se podrá comprobar la cantidad de intentos de acceso que se realizan a diario hacia mi servidor.

Añadir nuevo comentario

This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.