ūüďä QU√Č es el STACK ELK y C√ďMO instalarlo en UBUNTU ūüŹÜ Elasticsearch | Logstash | Kibana

Enviado por LT DATA el Lun, 28/12/2020 - 18:32

ūüďä 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 

stack elk
  • 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