Elasticsearch con Monitorización Ligera

Monitorización Ligera con Elastic Metricbeat :¿ una nueva tendencia ?

Por este vuestro blog os mantenemos pero que muy bien informados acerca de las mejoras en nuestra joya de la corona como lo es Pandora FMS. Desde la versión 7.0 NG 712, gracias a la integración con Elastic, hemos mejorado drásticamente el sistema de almacenamiento y visualización de registros o logs, lo que nos permite aumentar el crecimiento y la velocidad en la presentación de la información. Pero esperen, aun hay más que presentaros antes de pasar a describiros la Monitorización Ligera.

Monitorización Ligera versus Monitorización

Con Pandora FMS tendréis no una simple Monitorización sino más bien una Monitorización Robusta: trabajamos incansablemente con la vista puesta en vigilar miles de dispositivos, de manera masiva. Sin embargo la flexibilidad forma parte de nuestro nombre, por ello aunado a lo mejorado en la versión 712, en la versión 7.0 NG 717 añadimos un nuevo componente: el SyslogServer.

De esta manera Pandora FMS recopila toda la información unificada para entregarla a un servidor Logstash/ElasticSearch previamente configurado para de esta manera tener una poderosa herramienta de búsqueda y presentación. A nivel gráfico los resultados son impresionantes y siempre tendremos todo centralizado en la consola de Pandora FMS.

Elasticsearch con Monitorización Ligera
Elasticsearch con Monitorización Ligera

ElasticSearch está programado en lenguaje Java y se sirve de Apache Lucene para «tragar» todo tipo de información que le suministremos, es como una caldera que «quema y produce resultados» sin importar el tipo de «combustible» que utilicemos. Nos atrevemos a decir que es de propósito múltiple y para nosotros en particular quien lleva la batuta es y será siempre Pandora FMS como «fogonero».

Hablemos, ahora sí, de Monitorización Ligera

La Monitorización Ligera es una nueva tendencia para pequeñas empresas o personas que desean o están interesados en puntos específicos en la monitorización de aplicaciones, por ejemplo. Vayamos a algo más simple: digamos que necesitamos saber la dirección IP de un ordenador, nada más sencillo que eso. Para ello utilizaremos cualquiera de los populares servicios de DNS dinámicos, ¿estaremos monitorizando? Pues no, simplemente estaremos usando un servicio.

Vayamos más allá colocando en nuestra página web un subdominio con un pequeño programa escrito en PHP y HTML que recibirá un mensaje desde un agente software que instalaremos en la máquina a supervisar. Todo esto será guardado en una base de datos que nos permitirá retribuir no solo la última dirección IP sino también cada cuánto tiempo cambia dicha dirección -o si se mantiene igual- en intervalos de 5 minutos y si el tiempo supera esa medida asumiremos que no tiene conexión (o algo peor) lo cual nos permitirá realizar una alarma rudimentaria tal como enviar por correo electrónico el aviso correspondiente.

Este ejemplo lo llamaremos como una Monitorización Ligera, y las pequeñas empresas y personas frecuentemente necesitan este tipo de servicios, o unos cuantos más sin superar una docena. Conscientes somos de este sector de pequeñas y medianas empresas las cuales incluso les resulta más práctico una Monitorización Ligera o, un paso adelante, delegar en terceros una monitorización remota fuera de sus instalaciones. En una entrevista a nuestro CEO el Sr. Lerena se explica en detalle cuáles son las futuras opciones de Ártica ST para este importante sector de la economía.

Monitorización Ligera con Beat

Beat es el nombre clave para un conjunto de programas que entregan datos directamente a ElasticSearch y/o Logstash y que por tanto actúan como agente Software pero en vez de ser de propósito general como los de Pandora FMS, son de propósito específico cada uno y cada día aumentan en variedad pues están abiertas a las contribuciones.

Manejo de los Grandes Datos con Pandora FMS, LogStash y ElasticSearch
Interacciones de Pandora FMS, LogStash y ElasticSearch

Al momento de escribir este artículo existían los siguientes en su página web oficial, y los describimos brevemente a cada uno:

  • Auditbeat: para llevar registro y control de los eventos del kernel Linux, así como las modificaciones a los ficheros. Es capaz de retener los mensajes que no ha enviado en caso de no haber conexión con nuestro servidor ElasticSearch, esta característica acompaña también a los demás productos de esta lista.
  • Filebeat: a pesar de su nombre, no se refiere a ficheros normales sino a los registros o logs. Viene preparado para detectar y enviar lo relacionado con auditd, Apache, NGINX, System, MySQL y otros más, ya sea en máquinas reales o en contenedores como Docker. Tiene la opción de enviarlos ya sea a ElasticSearch y/o Logstash, los cuales narramos al principio.
  • Heartbeat: para saber si están en línea por medio de ping pero en un concepto ampliado, no solo ICMP sino también TCP, y  HTTP o TLS, también puede autenticar y pasar por cualquier proxy. Sí, en sentido estricto de la definición que todos y todas conocemos éso no es un servicio ping pero lo bueno del software libre es que lo podemos programar como nosotros lo necesitemos. Entrega a ElasticSearch y/o Logstash.
  • Metricbeat: del cual hablaremos en detalle.
  • Packetbeat: también trabaja con ElasticSearch y/o Logstash y se encarga de capturar el tráfico de nuestra red, determina el protocolo utilizado, relaciona solicitudes y respuestas para luego extraer los campos tales como tiempo y estado para agruparlos en formato adecuado antes de enviarlos. Funciona además como librería, así que nuestros programas en lenguaje Go tendrán una excelente herramienta o podremos crear nuestros propios detectores de protocolos (ya tiene integrado para detectar el tráfico de bases de datos como MySQL, PostgreSQL , MongoDB y más).
  • Winlogbeat: es análogo a Filebeat pero aplicado única y exclusivamente a todos los eventos del sistema operativo Windows®.
Por favor, lea también   Cómo funciona un sistema operativo de red y cómo monitorizarlo

Todos los Beats se valen de guiones escritos en Python 2.7.9 con virtualenv para generar archivos de configuración y documentación de los mismos.

Metricbeat

Ya en otra oportunidad hablamos sobre las métricas que realmente importan  y sabemos que son variopintas. Por ello Metricbeat se encargará de recogerlas para nosotros por medio de dos componentes: los módulos («modules») y los juegos de métricas («metricsets»).

Los módulos especifican el servicio sobre el cual se va a recolectar la métrica, cómo conectar a ese servicio y cada cuánto tiempo hacer la consulta. Como cada servicio puede devolver muchos valores, Metricbeat los agrupa en un juego de métricas en formato normalizado antes de enviarlos. Aun cuando no reciba una respuesta efectiva tras varios intentos, Metricbeat siempre nos devolverá un informe indicando el fallo.

Metricbeat entregará todos los datos recogidos a nuestro servidor el cual habremos instalado con la orden «sudo apt-get install elasticsearch logstash kibana» (en el caso de Debian y similares). Nótese que deberemos instalar también a Kibana, una herramienta para graficar la información procesada y es el equivalente a la consola de Pandora FMS.

Resumimos los tres componentes por sus ficheros de configuración:

  • «/etc/kibana/kibana.yml»: «server.host» y «elasticsearch.url».
  • «/etc/elasticsearch/elasticsearch.yml»: «network.host».
  • «/etc/logstash/logstash.yml»: «http.host»

Luego haremos uso de systemctl para habilitarlos en el arranque de la máquina e iniciarlos de una vez para instalar los nodos o dispositivos que vamos a monitorizar de manera ligera.

Para ellos ejecutamos «sudo apt-get install metricbeat» y configuramos el fichero «/etc/metricbeat/metricbeat.yml» donde agregaremos la dirección IP del servidor, protocolo, usuario y contraseña. Muy importante iniciar el servicio con «systemctl start metricbeat.service». A rasgos muy generales sería eso y en este enlace podréis leer la información completa de configuración.

Seguridad en la comunicación con Metricbeats

Pandora FMS cuenta con su propio protocolo de comunicación llamado «Tentacle» para garantizar que todos nuestros datos e información no caiga en manos de terceros durante su transporte. Metricbeat usa protocolos normalizados  como HTTPS, que ya sabemos cómo configurar por medio de ficheros en texto plano. Debemos poner atención en que las contraseñas almacenadas sean encriptadas en dichos archivos y para ello Metricbeat ofrece la utilidad Secrets keystore:

  • «metricbeat keystore create»: inicializa el almacenamiento.
  • «metricbeat keystore add»: agregamos una contraseña a nuestra lista
  • Para pasar directamente una contraseña almacenada en un fichero usaremos la opción anterior con la opción –stdin y el comando tubería, por ejemplo «cat /etc/fichero.txt | metricbeat keystore add nombre_clave –stdin».
  • El nombre_clave lo usaremos como ${nombre_clave} en los archivos de configuración para que Metricbeat desencripte la contraseña y la envíe para comunicarse con nuestro servidor ElasticSearch y/o Logstash.

Alcance de la Monitorización Ligera

Poco más podemos decir acerca de ello debido a la simplicidad de la misma, sin embargo avizoramos la entrada de más opciones de Monitorización Ligera y estaremos pendientes para traeros nuevas noticias. Mientras tanto contactad con nosotros para mayor información, dudas o comentarios sobre la monitorización ¡Hasta una próxima oportunidad!

Caso práctico de stack ELK + Metricbeathttps://www.elarraydejota.com/caso-practico-de-stack-elk-metricbeat/
How Metricbeat workshttps://www.elastic.co/guide/en/beats/metricbeat/current/how-metricbeat-works.html
ELK: Installing MetricBeat for collecting system and application metricshttps://fabianlee.org/2017/04/16/elk-installing-metricbeat-for-collecting-system-and-application-metrics/
A Metricbeat Tutorial: Getting Startedhttps://logz.io/blog/metricbeat-tutorial/
Logging with Logstash, ElasticSearch, Kibana and Redishttps://medium.com/@pereiragoncalo/logging-with-logstash-elasticsearch-kibana-and-redis-e855bc08975d