Monitorización del Flow Engine
En esta release 5.0.0-Renegade hemos 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, hemos creado una serie de elementos de la Plataforma que te van a permitir 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 estos logs, filtrar la información relevante y plasmarla en un Dashboard, se requiere:
Entidades y Digital Client
Se han creado dos Entidades, tal como describimos a continuación:
- 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. Estos registros se generan cada medio minuto.
- flowEngineDomainLogs: para 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, etc.).
- 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, denominado como: «FlowEngine-logging-client».
DataFlow
Se ha creado un DataFlow para leer los logs, procesarlos y realizar la carga sobre las Entidades anteriores, el cual se denomina como «FlowEngineLogProcessor».
Dashboard
Para poder atacar estos datos, hemos 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 con 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.
Imagen de cabecera: Carlos Muza en Unsplash.