Voy a realizar una serie de entradas donde os explicaré como podemos montar la solución Open Source ELK Stack.
Para aquellos que no lo conozcáis ELK Stack es la unión de tres proyectos Open Source (Elasticsearch, Logstash y Kibana) desarrollados por Elastics los cuales juntos nos permiten recoger datos de cualquier tipo de fuente y en cualquier formato para realizar búsquedas, análisis y visualización de los datos en tiempo real.
Poco a poco os iré explicando como instalar y configurar cada uno de los componentes que conforman esta plataforma así como os daré ejemplos de cosas que podéis hacer.
No me enrollo más, vamos a empezar esta primera entrada explicando como realizar la instalación de Elasticsearch que será nuestro motor de analítica y análisis distribuido y donde también guardaremos los datos que vayamos recogiendo.
Requisitos servidor
- CPU: No se hace un consumo demasiado elevado de CPU por lo que al menos necesitaremos un procesador actual con la menos 2 núcleos.
- Memoria: El uso de memoria es bastante importante por lo que se recomienda al menos 8 GB aunque esto dependerá de la carga que vaya a tener el servidor. Lo normal suelen ser 16 o 32 GB siendo lo ideal 64 GB.
- Disco: Se recomiendan en la medida de lo posible discos SSD. La capacidad dependerá del número de datos a guardar/procesar.
- Red: Una conexión al menos Gibabyte.
Preparación entorno
La instalación la realizaré sobre un servidor Linux Ubuntu 20.04 LTS.
Los componentes de ElasticSearch no están disponibles en los repositorios de paquetes predeterminados de Ubuntu aunque si tenemos la opción de realizar la instalación mediante APT simplemente agregando la lista de fuentes de Elastic tal y como os muestro a continuación.
Primero importaremos la clave GPG pública de Elasticsearch a APT.
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Agregamos la lista de fuentes de Elastic al directorio sources.list.d
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Actualizamos las listas de paquetes para que APT obtenga la información de la nueva fuente de Elastic.
sudo apt update
Instalación ElasticSearch
Una vez configurado nuestro entorno ya podremos realizar la instalación de una forma rápida y sencilla mediante APT.
sudo apt install elasticsearch
Configuración ElasticSearch
Para configurar Elasticsearch, editaremos el archivo de configuración elasticsearch.yml. Este archivo podemos encontrarlo en /etc/elasticsearch.
Este fichero trae ya muchas cosas configuradas por defecto y podemos modificarlo a nuestro agrado para realizar configuraciones para cluster, modificar valores de memoria, red, etc… pero para este ejemplo dejaremos las opciones por defecto y sólo modificaremos el tipo de acceso permitido para que sólo sea desde el propio servidor o el caso contrario, acceder desde otro servidor/equipo.
Nota: Yo voy a utilizar el editor nano pero podéis utilizar el que uséis normalmente.
sudo nano /etc/elasticsearch/elasticsearch.yml
Acceso desde el propio servidor
Buscamos la línea network.host, eliminamos el comentario, reemplazaremos el valor por localhost y guardamos los cambios.
Acceso desde el exterior
Buscamos la línea network.host, eliminamos el comentario, reemplazamos el valor por el valor 0.0.0.0, agregamos una nueva línea cluster.initial_master_nodes: node-1 y guardamos los cambios.
Para el acceso desde el exterior es importante que abramos en nuestro Firewall el puerto 9200.
Una vez modificado el fichero de configuración iniciamos el servicio de ElasticSearch.
sudo systemctl start elasticsearch
Configuramos el servicio para que se inicie automáticamente junto con el arranque del sistema.
sudo systemctl enable elasticsearch
Comprobación ElasticSearch
Ya sólo nos quedaría comprobar que ElasticSearch está levantando y escuchando por el puerto 9200.
curl -X GET 'http://localhost:9200'
Y si todo ha ido bien deberá aparecernos algo parecido a esto:
{ "name" : "server", "cluster_name" : "elasticsearch", "cluster_uuid" : "9KgGuAmkQDy64-H_WV51BA", "version" : { "number" : "7.7.0", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "81a1e9eda8e6183f5237786246f6dced26a10eaf", "build_date" : "2020-05-12T02:01:37.602180Z", "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"
Y esto es todo ya tenemos nuestro servidor ElasticSearch funcionando.
En próximas entradas os explicaré como realizar la instalación del resto de componentes entre otras cosas.
Espero os haya servido de utilidad.
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.