Monitorización del Flow Engine
Objetivo
En esta release se incluido una nueva funcionalidad para la monitorización de recursos del Flow Engine.
Para facilitar la monitorización de consumo de recursos por parte de cada dominio (instancia de NodeRED) de. Flow Engine, se han creado una serie de elementos de plataforma que nos permiten analizar los propios logs de dicho módulo y visualizar la información de consumo de recursos y ejecución de procesos de manera sencilla mediante un dashboard.
¿Cómo funciona?
Para poder interpretar los logs, filtrar la información relevante y plasmarla en un dashboard se han creado una estos elementos:
Entidades y Digital Client
Se crean 2 entidades:
flowEngineResourceConsumption: Para el uso de recursos por dominio. Dicha entidad almacenará el consumo de CPU, memoria RAM, número de conexiones abiertas y estado del mismo (activo o no), así como el timestamp. Estas medidas se generan cada 30 segundos.
flowEngineDomainLogs: Almacenará el resto de trazas de log por dominio, teniendo como campos:
timestamp/timestampISO: millis e interpretación texto en ISO 8601 del momento de generación del registro
level/leve_name: Nivel de traza e interpretación a texto (INFO, WARN, ERROR, …)
domain: Dominio del Flow Engine (instancia de nodeRED)
id: Identificador del nodo que genera la traza
type: Tipo de nodo (nombre del tipo nodeRED) que genera la traza
msg: Objeto con el contenido del mensaje. En la mayoría de casos este objeto contendrá el ID del mensaje.
z: Identificador del flujo (pestaña nodeRED) donde se genera la traza.
Estas entidades estarán disponibles para su explotación
También se ha creado un Cliente Digital para acceder a dichas entidades: FlowEngine-logging-client
DataFlow
Se crea un Dataflow para leer los logs, procesarlos y realizar la carga sobre las entidades anteriores: FlowEngineLogProcessor
Dashboard
Para poder atacar estos datos, se han creado también una serie de Datasources, Gadgets y un Dashboard. La lista de elementos es la siguiente:
Datasources: FlowEngineDomains, FlowEngineMonitor_cpu_usage, FlowEngineMonitor_logs, FlowEngineMonitor_ram_usage, FlowEngineMonitor_sockets_count
Gadgets: FlowEngineMonitor_gadget_cpu_usage, FlowEngineMonitor_gadget_Domain_Logs, FlowEngineMonitor_gadget_memory_usage, FlowEngineMonitor_gadget_socket_count
Dashboard: Dashboard Flow Engine Monitoring
En dicho dashboard tenemos dos pestañas:
Resource consumption: Para visualizar el consumo por dominio, filtrando por nombre de dominio y rango temporal.
Domain Logs: Para visualizar los logs del dominio directamente, permitiendo el mismo filtrado por dominio y rango de fechas/hora
¿Cómo desplegarlo?
Para que no se tengan que crear todos estos elementos a mano, hemos añadido al módulo configInit un proceso de generación automática de los mismos.
Por defecto estará activado, pero pueden crearse lanzando el módulo con la propiedad “onesaitplatform.init.flowEngineMonitor“ o la variable de entorno “LOADFLOWENGINEMONITOR“ activada a true.
Lo único necesario para que el Dataflow pueda acceder a los logs es mapear un volumen al módulo Streamsets/Dataflow, apuntando con el directorio local “/var/log/platform-logs” al volumen donde el Flow Engine está generando los logs.