Objetivo
En esta release se ha añadido la posibilidad de desplegar un nuevo componente 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, hemos 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 serie de elementos con la siguiente funcionalidad:
Se crean dos 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
Se crea un Cliente Digital para acceder a dichas entidades: FlowEngine-logging-client
Se crea un Dataflow para leer los logs, procesarlos y realizar la carga de las entidades anteriores: FlowEngineLogProcessor
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.
Esto creará todos los elementos ya descritos. 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.