📊 QUÉ es el STACK ELK y CÓMO instalarlo en UBUNTU 🏆 Elasticsearch | Logstash | Kibana
Hola a todos y bienvenidos de nuevo a este blog. En esta entrada trataré de enseñaros qué es el stack elk (Elasticsearch, Logstash y Kibana), así como a instalarlo en una máquina con Ubuntu 18.04
Comentar que no profundizaré mucho en estas herramientas individualmente, las veremos más como conjunto. Ya que bien se merece cada una tener su propia entrada en este blog.
¿Qué es el stack ELK?
Pues bien, es una colección de tres herramientas de código abierto (Elasticsearch, Logstash y Kibana). Las cuales son todas desarrolladas y mantenidas por la empresa Elastic.
La 'E' de la sigla ELK hace referencia a Elasticsearch, herramienta que se utiliza para almacenar datos, de una forma indexada, y que nos permitirá recuperarlos posteriormente a gran velocidad.
La segunda letra de la sigla es la 'L' de LogStash, herramienta que se utiliza tanto para el envío como para el procesamiento (transformación y limpieza) de registros.
La última letra de la sigla 'K' hace referencia a Kibana, la cual es una herramienta de visualización (mediante el navegador) que se aloja a través de Nginx o Apache.
ELK, está diseñado para permitir a los usuarios acceder a datos de cualquier fuente, en cualquier formato, y buscar, analizar y visualizar esos datos en tiempo real.
El grupo de herramientas ELK trabajando en conjunto proporciona un registro centralizado que resulta útil cuando se intenta identificar problemas con servidores o aplicaciones. Te pongo un ejemplo, te permite buscar todos tus logs de varias máquinas en un solo lugar.
También ayuda a encontrar problemas que ocurren en varios servidores conectando sus logs durante un período de tiempo específico. Es decir, uno de sus principales usos, es agrupar los logs de un cluster con varias máquinas, para a través de kibana, poder ver de una forma gráfica todos ellos.
Vamos a poner un ejemplo práctico de cómo sería el proceso ELK desde la captura de un logs a la visualización del mismo
- Logs: corresponde con los logs del servidor que deben analizarse.
- Logstash: recopila dichos ficheros logs, e incluso puede realizar procesos de transformación y limpieza.
- ElasticSearch: los datos transformados de Logstash son almacenados por esta herramienta.
- Kibana: utiliza Elasticsearch como base de datos para visualizarlos.
Aquí, es muy común utilizar Apache Kafka entre Logstash y Elasticsearch, pero de esta herramienta hablaremos en próximos vídeos.
Algunas de la ventajas de utilizar el stack ELK
- Te permite ver los logs de varias máquina desde una sola.
- Proporciona información para esta única instancia y también elimina la necesidad de iniciar sesión en cientos de fuentes de datos de registro diferentes.
- Su instalación es sencilla y rápida.
- Permite escala vertical y horizontalmente.
- Elastic ofrece una gran cantidad de idiomas así como de bibliotecas para diferentes lenguajes de programación.
Sin embargo, por comentar alguna de las desventajas
- Los diferentes componentes del stack pueden resultar difíciles de manejar cuando se pasa a una configuración compleja.
- La curva de aprendizaje es un poco complicada al principio, pero no hay nada como ensayo y error. Por lo tanto, cuanto más practicas.
Próximamente haré más vídeos hablando en detalle de estas tres herramientas, ya que este vídeo está pensado para ver que es el stack ELK y cómo instalarlo en ubuntu. Así que ya descrito el stack vamos con la instalación.
¿Cómo instalar el STACK ELK en UBUNTU?
Empezaremos actualizando nuestra máquina, para ello ejecutaremos sudo apt update que actualizará la lista de paquetes disponibles y sus versiones, pero no realiza ninguna instalación o actualización. Para ello ejecutaremos justo después sudo apt-get upgrade.
> sudo apt update> sudo apt-get upgrade -y
Una vez actualizada la máquina procederemos a instalar java 8 con los siguientes comandos, los cuales os dejo en la descripción del vídeo
> sudo add-apt-repository ppa:webupd8team/java
> sudo apt-get update o sudo apt update
> sudo apt install openjdk-8-jdk
Verificaremos que se ha instalado correctamente y que es la versión 8 mediante el comando java -version
> java -version
Empezamos con la instalación de la primera de las herramientas, en este caso será Elastcisearch
Nos vamos a la carpeta donde queramos hacer la descarga, en mi caso será /tmp para las tres herramientas
> cd /tmp
Descargamos mediante wget elasticsearch
> wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.2-amd64.deb
Lo instalaremos mediante el comando dpkg
> sudo dpkg -i elasticsearch-7.5.2-amd64.deb
En mi caso, voy a instalar las tres herramientas en la misma máquina, pero de no ser así tendría que modificar en el fichero /etc/init.d/elasticsearch la variable network.host
sudo nano /etc/elasticsearch/elasticsearch.yml
network.host to [local, eth0]
> nano /etc/init.d/elasticsearch
Localizar la línea:
# network.host: localhost
Configuraremos elasticsearch para que se inicie cada vez que se enciende la máquina
> sudo systemctl enable elasticsearch.service
Arrancaremos elasticsearch mediante el comando systemctl start
> sudo systemctl start elasticsearch.service
para comprobar que elasticsearch esta funcionando correctamente comprobaremos su estado mediante systemctl status. También, lo podremos comprobar mediante curl -X GET "localhost:9200/"
> sudo systemctl status elasticsearch.service
o
> /etc/init.d/elasticsearch start
> /etc/init.d/elasticsearch status
Otra verificación
> curl -X GET "localhost:9200/"
Podremos verlo a través del navegador mediante
http://server_ip:9200/ o http://localhost:9200/
Para arrancarlo a través de Docker
> docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:5.0.0
Una vez instalado correctamente elasticsearch pasaremos a instalar y configurar kibana
> cd /tmp
Para ello descargaremos al igual que hicimos anteriormente el paquete con wget y lo instalaremos con dpkg
> wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.2-amd64.deb
> sudo dpkg -i kibana-7.5.2-amd64.deb
En caso de que no vayamos a tener elasticsearch y kibana en la misma máquina tendremos que modificar el fichero /etc/kibana/kibana.yml indicándole otro valor a las variables server.host: "localhost" y elasticsearch.url: "http://localhost:9200"
> sudo nano /etc/kibana/kibana.yml
Localizar las líneas:
#server.host: "localhost"
#elasticsearch.url: "http://localhost:9200"
Cambiarlas por
#server.host: "SERVER_IP"
#elasticsearch.hosts: "http://SERVER_IP:9200"
> sudo sysctl -w vm.max_map_count=262144
Configuraremos Kibana para que se inicie cada vez que se enciende la máquina
> sudo systemctl enable kibana.service
Arrancaremos kibana mediante el comando systemctl start
> sudo systemctl start kibana.service
Comprobaremos que kibana está funcionando correctamente mediante el comando systemctl status
> sudo systemctl status kibana.service
Podremos verlo a través del navegador mediante
http://server_ip:5601/ o ip_address:5601
Ahora pasaremos a instalar y configurar la última de las tres herramientas, Logstash
> cd /tmp
Repetimos los pasos anteriores de descargar los paquetes con wget e instalarlos con dpkg, pero en este caso los de Logstash
> wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.2.deb
> sudo dpkg -i logstash-7.5.2.deb
Si tuviéramos que hacer alguna modificación en la configuración de logstash sería en /etc/logstash/logstash.yml
> sudo nano /etc/logstash/logstash.yml
Modificaremos la línea:
# http.host: "127.0.0.1"
Configuramos Logstash para que se inicie cada vez que se enciende la máquina
> sudo systemctl enable logstash.service
Arrancaremos Logstash mediante el comando systemctl start
> sudo systemctl start logstash.service
Comprobaremos que logstash está funcionando correctamente mediante el comando systemctl status
> sudo systemctl status logstash.service