logoImagina
iconCurso
Te recomendamos nuestro curso de ELK
Descubre el curso de ELK
Ir al curso
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Tutorial ELK (Elasticsearch, Logstash y Kibana)

iconImage
Publicado 2024-03-07
Actualizado el 2024-04-16

Aprende ELK desde cero

¡Bienvenido al emocionante mundo de Elk! Si estás interesado en aprender cómo aprovechar al máximo esta poderosa plataforma de análisis de registros y búsqueda en tiempo real, has llegado al lugar correcto. En este tutorial de primeros pasos de Elk, te guiaremos a través de los fundamentos de la configuración y el uso de Elk para gestionar y analizar tus registros de manera eficiente. Además, si deseas seguir formándote en este ámbito, en nuestro curso de Elk aprenderás desde cero cómo configurar, gestionar y analizar tus registros de manera eficiente. Con instrucciones paso a paso, te enseñaremos a crear paneles personalizados e informes detallados. ¿Estás listo para sumergirte en el fascinante mundo del análisis de registros?

¿Qué es ELK?

Cuando estás desarrollando en un servidor puedes tener una gran cantidad de logs, y un problema al que estos pueden ser muy diferentes entre sí, ya que cada servicio puede tener su propio formato de log. Para solucionar esto se utilizan los tres componentes, al tener todos los logs de una forma unificada y fácil de manipular.

Cada componente se encarga de una actividad:

  • Elasticsearch: Es una base de datos para almacenar los logs que queremos revisar, permitiendo una gran variedad de consultas diferentes. Está construida en Java lo que permite que se utilice en diferentes plataformas. Recomendado: curso de Elasticsearch
  • Losgstash: Es procesador de datos de código abierto que procesa los logs, los transforma al formato que queramos y se los envía a Elasticsearch para que podamos visualizarlos.
  • Kibana: Genera un interfaz web para buscar y visualizar los logs, generando las búsquedas y visualizaciones a través de los datos de Elasticsearch

Cómo instalar ELK

Antes de nada debemos tener el JDK de Java, una vez lo hayamos instalado comprobamos que todo haya ido bien en la instalación, utilizaremos el comando:

1java -version

Que nos devolverá algo como esto:

1java version "1.8.0_201" 2 3Java(TM) SE Runtime Environment (build 1.8.0_201-b09) 4 5Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

Ahora ya podemos descargamos los archivos Elasticsearch, Kibana y Logstash. Luego los descomprimimos donde queramos.

También nos vamos a descargar un servidor apache del cual recibir los logs, en nuestro caso será Xampp. Esto es tan fácil como descargarlo y utilizar el instalador.

Para iniciar Elasticsearch tenemos que iniciar la consola en el directorio en el que lo hayamos descomprimido y utilizar el comando:

1binelasticsearch

Y para iniciar Kibana hay que realizar el mismo procedimiento, abrir otra consola en el directorio en el que fue descomprimido y ejecutar el comando:

1binkibana

Ahora podemos acceder a http// localhost:5601/ para ver Kibana, pero nos dirá que no tiene ningún dato, así que ahora es turno de configurar Logstash.

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Configurar Logstash

Logstash necesita que configuremos que tipo de datos, así como las direcciones de entrada y salida.

Para esto crearemos un archivo llamado logstash.conf dentro del directorio descomprimido de Logstash.

En este archivo añadimos el siguiente código:

1input { 2 3file { 4 path => "/xampp/apache/logs/access.log" 5 type => "apache_access" 6 start_position => "beginning" 7 } 8 9file { 10 path => "/xampp/apache/logs/error.log" 11 type => "apache_error" 12 start_position => "beginning" 13 } 14} 15 16filter { 17 if [type] in [ "apache" , "apache_access" , "apache-access" ] { 18 grok { 19 match => [ 20 "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}", 21 "message" , "%{COMMONAPACHELOG}+%{GREEDYDATA:extra_fields" 22 ] 23 overwrite => [ "message" ] 24 } 25 26 mutate { 27 convert => ["response", "integer"] 28 convert => ["bytes", "integer"] 29 convert => ["responsetime", "float"] 30 } 31 32 geoip { 33 source => "clientip" 34 target => "geoip" 35 add_tag => [ "apache-geoip" ] 36 } 37 38 date { 39 match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ] 40 remove_field => [ "timestamp" ] 41 } 42 43 useragent { 44 source => "agent" 45 } 46 } 47 48 if [type] in ["apache_error","apache-error"] { 49 grok { 50 match => ["message", 51 "[%{WORD:dayname} %{WORD:month} %{DATA:day} %{DATA:hour}:%{DATA:minute}:%{DATA:second} %{YEAR:year}] [%{NOTSPACE:loglevel}] 52 (?:[client %{IPORHOST:clientip}] ){0,1}%{GREEDYDATA:message}" 53 ] 54 overwrite => [ "message" ] 55 } 56 57 mutate 58 { 59 add_field => 60 { 61 "time_stamp" => "%{day}/%{month}/%{year}:%{hour}:%{minute}:%{second}" 62 } 63 } 64 65 date { 66 match => ["time_stamp", "dd/MMM/YYYY:HH:mm:ss"] 67 remove_field => [ "time_stamp","day","dayname","month","hour","minute","second","year"] 68 } 69 } 70} 71 72output { 73 74 elasticsearch { 75 hosts => "localhost:9200" 76 index => "apache" 77 } 78 79 stdout{codec => rubydebug} 80}

Este código está dividido en tres partes, la ruta de entrada de los archivos, que es el apartado input, con las rutas de los logs de petición y error de Apache en Xampp.

La segunda parte consiste en el filtrado por tipo de archivo y el formateo de datos para poderlos leer fácilmente.

Y la última corresponde a la salida de los datos, que en este caso es Elasticsearch, pasandole el puerto en el que se ejecuta y el nombre de los datos que le pasamos.

Una vez hecho esto ya podemos abrir otra consola en la carpeta en la que descomprimimos Logstash y utilizamos el comando:

1binlogstash -f logstash.conf -t

Con este comando comprobamos que la configuración que hemos realizado no contenga ningún fallo sintáctico, si es así nos devolverá un mensaje como este indicando que todo está bien:

1[2019-05-02T13:18:31,637][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

Ahora que hemos comprobado que la configuración no tiene ningún fallo ya solo nos queda iniciar Logstash con el comando:

1binlogstash -f logstash.conf

Interfaz Kibana

A continuación, con todo preparado ya volvemos a la url de Kibana, http//localhost:5601/, y nos preguntara qué datos queremos filtrar, dándole como valor el index que le pasamos en la configuración de Logstash, en nuestro caso apache:

Interfaz de Kibana, con la configuración de Apache

Después elegimos el filtro de tiempo por el que queremos que se ordenen y ya tendríamos acceso a nuestros logs en Kibana:

Filtro de tiempo @timestamp en kibana

Ahora nos aparecerán todos los datos a los que podríamos acceder en nuestros logs. Así que le daremos al botón Discover para ver el aspecto de nuestros logs:

Botón Discover en la barra lateral izquierda de Kibana

Ahora intentaremos realizar una gráfica según si son error o petición, por lo que le daremos al botón Visualice:

Botón Visualice en la barra lateral izquierda de Kibana

Aquí, elegimos que tipo de visualización queremos que sea, eligiendo una de Barras Verticales:

Tipo de visualización de barra vertical en Kibana

Después  le indicamos que el eje X tiene que ser type.keyword y añadimos una separación por tiempo:

Diferentes opciones de visualización en Kibana

Ahora tenemos que hacer que los cambios se trasladen al gráfico y después guardarlo con Save:

Guardar cambios Kibana

Ya tenemos nuestro primer gráfico realizado utilizando Elasticsearch, Logstash y Kibana. Para acabar lo importamos a una herramienta para poder todos nuestros gráficos en conjunto. Para esto utilizamos Dashboard:

Botón Dashboard en la barra lateral izquierda de Kibana

Le indicamos Create a new Dashboard y luego pulsamos add para indicarle el gráfico que hemos creado. Después de configurarlo tenemos que guardas el nuevo Dashboard.

Con esto hemos conseguido crear nuestra primera interacción con ELK, Elasticsearch, Logstash y Kibana.

Curso completo de ELK

En resumen, Elk es una plataforma poderosa y versátil para el análisis de registros en tiempo real. No dudes en consultar nuestra página del curso de Elk para continuar tu aprendizaje y descubrir aún más posibilidades. ¡Te esperamos para ayudarte a dominar por completo el potencial de Elk!

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *
iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient