Introducción a logs centralizados

Disponible a partir de versión 2.3.0-immortal

Introducción

En este Q4 vamos a empezar con una serie de nuevas funcionalidades orientadas a la integración de logs. El objetivo es no sólo aunar los logs de plataforma en un único sitio, sino facilitar las búsquedas y análisis de los mismos.

Mediante el uso de Graylog vamos a poder analizar en tiempo real el contenido de nuestros logs de manera rápida y sencilla.

¿Qué es Graylog?

Graylog es una solución de gestión centralizada de logs open source que, entre otros, nos provee de sistemas de captura de logs estándar, ordenación y análisis en tiempo real de nuestros logs.

Más información en : https://www.graylog.org/products/open-source

Uso en Onesait Platform

A continuación vamos a describir cómo se conectan los módulos de plataforma y cómo cualquier aplicación desarrollada sobre ésta puede hacerlo también.

Conexión de plataforma

INPUTS:

Son los mecanismos que Graylog permite como entrada de logs a su sistema. En nuestro caso haremos uso de GELF (Graylog Extended Log Format) vía TCP

STREAMS:

Son un mecanismo de clasificación y categorización de logs. Mediante el uso de reglas, Graylog puede clasificar cada entrada de logs en un Stream. En el caso de plataforma, cada log lleva una serie de campos “custom” por los cuales podemos clasificar el origen de los mismos. El más importante es el campo “app_name” que indica el módulo origen de cada entrada. Para facilitar las búsquedas hemos creado un Stream por módulo, de tal manera que se pueda seleccionar rápidamente a la hora de buscar:

CAMPOS PERSONALIZADOS:

Como hemos hablado anteriormente, podemos definir campos personalizados a la hora de enviar los logs. Esto nos permitirá usarlos no solo en los Streams, sino también para nuestras búsquedas. Por ejemplo, en el caso del FlowEngine, añadimos el campo “domain” que tendrá al menos tres valores:

  • app.js: Proceso NodeJS principal gestor de los distintos dominios.

  • Proxy-nodered.js: Proxy interno usado por app.js para derivar las peticiones a las instancias de NodeRED.

  • “nombreDeDominio”: Imaginemos que con nuestro usuario nos hemos creado un dominio en el FlowEngine llamado “adminDomain”. Si buscamos por esa cadena, podemos ver los logs que genera solamente nuestro dominio:

BÚSQUEDAS:

Todos los campos, sean personalizados o no pueden ser aplicables en nuestras búsquedas, tanto para visualización como filtros:

Conexión de otros componentes

Una vez esté Graylog funcionando en plataforma, podemos aprovecharlo para añadir logs de aplicaciones desarrolladas sobre ésta, tales como microservicios.

Para ello tenemos 2 opciones:

Uso de GELF-TCP:

Igual que el resto de componentes de plataforma, es posible la conexión vía GELF TCP al puerto 12201. Ejemplo completo aquí: Cómo crear un microservicio que escriba a la herramienta de Logs Centralizados.

Uso de Sidecars:

Los sidecars son ligeros sistemas de configuración para diferentes colectores de logs o “backends”. El nodo o nodos de Graylog actúan como un hub centralizado que contiene las configuraciones de los colectores de logs. Sobre aparatos o hosts productores de mensajes que sean soportados, los sidecars corren como servicios (windows) o demonios (Linux).

La configuración de los colectores de logs se gestiona de manera centralizada desde Graylog, quien las distribuye vía sidecar automáticamente. Periódicamente, el demonio Sidecar buscará todas las configuraciones relevantes para el objetivo. Estos sidecars activan colectores (soportando FileBeat, Winlogbeat y NXLog por defecto) que son los que enviarán los logs a Graylog

Para más información sobre cómo configurar sidecars y colectores: https://docs.graylog.org/en/4.0/pages/sidecar.html

Siguientes pasos

En el primer trimestre de 2021, Graylog estará completamente integrado con Onesait Platform Identity Manager y será accesible a través del ControlPanel junto con una gestión de accesos derivada de los usuarios de plataforma. Hasta ese momento, se accederá desde una URL separada y con un único usuario administrador.

Explicación en vídeo