Cuando se trata de monitoreo de logs Elastick Stack es una de las herramientas predilectas de nosotros, los desarrolladores de software, es por eso que es muy importante conocer y entender el para qué de cada una de las subherramientas que conforman el stack. Las mismas fueron cambiando a lo largo del tiempo para poder mejorar tanto con nuevas funcionalidades como mejorando la performance, facilitándonos así el poder incorporarlas a nuestros proyectos sin el temor de generar una sobrecarga para los mismos. Sin mas que agregar te invito a continuar leyendo este post.
¿Qué es Beats?
Beats como bien dije en el párrafo anterior es una herramienta que conforma el stack de Elastic y que se utiliza para recopilar información de un cúmulo de lugares que a futuro nombraremos, pudiendo transformarla y enriquecerla para envíirsela a Logstash o Elasticsearch.
Hay diferentes tipos de Beats que tienen distintas caracteristicas que nos facilitarán la recopilación y procesamiento de distinto tipo de información.
Filebeat
El beat más usado es Filebeat, el cual se encarga de leer ficheros de logs de equipos remotos. Además de esta funcionalidad cuenta con una amplia cantidad de modulos que facilitan la ingesta de logs de diferentes plataformas(MySQL, Apache, Nginx, etc), es decir que esta optimizado para tomar los logs de la manera mas rápida posible.
Metricbeat
Ahora bien si necesitamos la información del sistema donde tengamos montado nuestros aplicativos, como el espacio en disco, cpu, memoria o etc, ésta es la opción recomendada.
Al igual que filebeat cuenta con módulos que facilitan la recopilación de información y cómo extra Kibana cuenta con un módulo Metrics que facilita la lectura de la información que se extrae.
Packetbeat
Otra opción, esta vez para analisis de los paquetes de red que ingresan a nuestro servidor o cluster es Packetbeat, el cual puede obtener info de errores, tendencias, tiempos de respuesta, latencias obviamente sin interferir y sin generar un rendimiento negativo en el equipo.
Heartbeat
En el caso de que necesitemos ver la actividad y tiempos de respuesta de nuestros endpoints la mejor solución es Heartbeat. Además dispone de un módulo en Kibana llamado Uptime que facilitará el entendimiento de esta información.
Winlogbeat
Esta herramienta fue diseñada para monitorear en vivo registros de eventos en Windows, tales como inicios de sesión, fallas al inicio de la misma, uso de dispositivos USB, instalación de nuevos programas, etc. Actúa como una mejora de seguridad y hace posible que una empresa controle literalmente todo lo que sucede con sus hosts con Windows.
Auditbeat
Este beat realiza una función similar al anterior pero en las plataformas de Linux integrándose con el framework de audit pudiendo monitorizar además la integridad de ficheros, metadata, hashes, etc.
Para buscar mas información sobre estos beats te recomiendo ingresar en la pagina oficial de Elastic. https://www.elastic.co/es/beats
Configuración básica
Para ejemplificar una configuración básica de esta herramienta estare utilizando filebeat. Lo primero que tenemos que saber es que esta herramienta es gratuita y la podemos descargar desde la página oficial (https://www.elastic.co/es/downloads/beats/filebeat). Una vez descargado lo más importante es ir a ver en carpeta principal llamada filebeat.yml. Este archivo es donde se encuentra la principal configuración de nuestro beat y es la que vamos a explicar.
Lo principal que tenemos que ver es el input y el output.
# ============================== Filebeat inputs ===============================
filebeat.inputs:
#La mayoría de las opciones se pueden configurar en el nivel de entrada,
#por lo que puede usar diferentes entradas para varias configuraciones.
- type: log
# Con este atributo habilitamos la configuración del input
enabled: false# Aquí van las rutas donde vamos a levantar el o los logs
paths:
- /var/log/*.log
Los outputs pueden apuntar a Logstash o Elasticsearch.
# ================================== Outputs ===================================
# Configure qué salida usar al enviar los datos recopilados por el beat.
# ---------------------------- Elasticsearch Output ----------------------------
#output.elasticsearch:
# de hosts a los que conectarse. Puede ser mas de uno.
#hosts: ["localhost:9200"]# ------------------------------ Logstash Output -------------------------------
#output.logstash:
# Los hosts de logstash
#hosts: ["localhost:5044"]
Depende de como quieras armar tu cluster de monitoreo el descomentar una de las dos formas de enviar los datos. Obviamente para poder levantar el beat es necesario que previamente nuestro output seleccionado este previamente arriba, para que no falle a la hora de enviar los datos.
Para esta serie de artículos sobre estas herramientas estoy creando un repositorio con la configuración inicial y poder así tener un ejemplo práctico de como se crea un ambiente de monitoreo de logs y aprender a utilizarlas en forma gradual, te invito a revisarlo en https://gitlab.com/Ger121190/elastic-stack-7
El mismo esta en desarrollo, y podrás encontrar el paso a paso dividido en diferentes branches. El proyecto esta hecho con Docker y Docker-Compose. Te invito a revisarlo
Espero que esta información te sea útil y que te mantengas al tanto sobre los nuevos artículos que vendrán a exponer las demás herramientas del Stack. Muchas gracias por leer.