Monitoreo
El CMS tiene cinco pantallas de monitoreo, y no son variaciones de lo mismo. Cada una responde una pregunta distinta, y saber cuál abrir primero ahorra la mayor parte del tiempo de un diagnóstico:
| Pantalla | Responde |
|---|---|
| Panel de Aplicaciones | ¿Quién está en línea? |
| Panel de Interfaces | ¿Qué se está acumulando? |
| Monitor de Mensajes | ¿A qué ritmo va cada interfaz? |
| Monitor en tiempo real | ¿Qué está pasando ahora en esta interfaz? |
| Cockpit | ¿Está todo bien? — visto de lejos, en una TV, sin nadie con sesión iniciada |
El camino natural es de arriba hacia abajo: el Panel de Aplicaciones muestra que la aplicación se cayó, el Panel de Interfaces muestra cuáles de sus interfaces se acumularon, y el monitor en tiempo real muestra los mensajes uno por uno.
Todas las pantallas de esta página respetan la Aplicación en foco elegida en el encabezado y las Interfaces permitidas del usuario. Dos personas viendo la misma pantalla pueden, legítimamente, ver conjuntos distintos de filas.
De dónde viene el ritmo de estas pantallas. Cada una tiene su cadencia — 5 segundos en los paneles, 1 segundo en el monitor en tiempo real, 15 en el pie de página —, pero quien cuenta el tiempo es un solo reloj, de toda la aplicación. Por eso dos recortes del mismo número (el total del pie y las columnas del Panel de Interfaces, por ejemplo) se actualizan en el mismo instante, en vez de divergir por algunos segundos porque cada pantalla empezó a contar al montar.
En cada ciclo el CMS primero pregunta si algo cambió y solo busca los datos si la respuesta es sí: en una instalación detenida, el ciclo pasa sin costo alguno. Aun con todo quieto la pantalla se actualiza sola al menos cada 30 segundos (60 en el pie), como red de seguridad para los cambios que esa pregunta no alcanza a ver. Y una pestaña en segundo plano no gasta ninguna consulta: al volver a ella, el dato se busca de inmediato.
Antes de abrir cualquiera de ellas: el encabezado
El contador de Aplicaciones está en la barra superior, en toda pantalla, y dice cuántas de
cuántas están activas — 24/30, no 24 ON. El número solo no respondía la pregunta que parece
responder: con el contador de offline oculto cuando es cero, no había cómo distinguir 24 de 24 de
24 de 30 mirando.
El punto al lado solo queda verde cuando es verdad que está todo activo; con alguna Aplicación caída queda gris, para que no sobre una señal de “todo bien” al lado de la alarma roja. Offline es el único de los dos que viene relleno y pulsando — el relleno es exclusividad de quien necesita acción. Hacer clic en cualquiera de los dos abre la lista de cuáles son.
Panel de Aplicaciones — /application-dashboard

Una tarjeta por aplicación integrada, actualizada cada 5 segundos. Es lo más parecido a un semáforo: separa “el CMS se detuvo” de “el sistema del otro lado se detuvo”.
Qué trae cada tarjeta
| Elemento | Significado |
|---|---|
| ON / OFF | Resultado del último keep-alive de la aplicación |
| En Proceso | Mensajes de la aplicación aún no entregados |
| Error | Mensajes con error de entrega, recolección o negocio |
| Procesadas | Entregadas con éxito hoy |
| Recibidas (hoy) | Todo lo que entró hoy (columna opcional) |
| Uptime / tiempo offline | Hace cuánto dura el estado actual |
| Interfaces | Cuántas interfaces tiene la aplicación — clic para listarlas |
| Prioridad | Etiqueta registrada en la Aplicación, para ordenar qué mirar primero |
Los tres primeros números son clicables: abren la pantalla que detalla ese número ya con la aplicación en foco — “En Proceso” abre el Panel de Interfaces, “Error” abre Mensajes con Error, “Procesadas” abre Mensajes Procesados. Cuando el usuario no tiene la Herramienta de la pantalla destino, el número sigue siendo solo un número, en lugar de un enlace a una pantalla bloqueada.
La pantalla destino abre en Hoy, por la fecha de retorno y solo con tráfico real — la misma cuenta de la tarjeta. Así, el mensaje recibido ayer que falló hoy aparece en la lista que abrió “Error”, en lugar de contar en la tarjeta y desaparecer de la lista.
El botón Detalles abre la ficha de la aplicación: tipo de keep-alive, conexión externa vinculada, última actividad, el motivo de la falla cuando está offline, y las observaciones registradas (que se copian con un clic — sirven de anotación de guardia).
Tres formas de ver la misma lista
- Grid — tarjetas, el modo por defecto.
- Lista — tabla, mejor cuando hay muchas aplicaciones y se quiere ordenar por columna.
- Categoría — las mismas tarjetas agrupadas por familia de conexión (HTTP, bases de datos, planta, SAP, mensajería). Útil para responder “¿el problema es solo de planta?”.
Encima de la lista hay además un atajo de pills por categoría, que solo muestra las categorías con al menos una aplicación.
Cuando una aplicación monitoreada se cae, el frontend emite alerta sonora y parpadea el título de la pestaña — incluso con el operador en otra pestaña del navegador. La tarjeta se pone roja y pulsa.
Panel de Interfaces — /dashboard

La lista de interfaces con movimiento, actualizada cada 5 segundos, separada en dos secciones: Interfaces de Recolección (el CMS busca) e Interfaces de Entrega (el CMS envía). Solo aparecen interfaces con al menos una Definición activa — una interfaz sin definición activa no va a procesar nada y solo ocuparía espacio.
La columna Estado, en orden de urgencia
La fila asume un estado, siguiendo esta precedencia — y la misma regla define el ordenamiento de la tabla, así que lo que necesita atención sube solo:
| Prioridad | Estado | Significa |
|---|---|---|
| 1 | Bloqueada | La interfaz fue bloqueada (manual o por error de negocio). Nada sale hasta liberar |
| 2 | OFF | La aplicación dueña de la interfaz está offline — con el tiempo transcurrido al lado |
| 3 | Programador Pausado | El job de esta interfaz está inactivo en Programadores. Nada será procesado |
| 4 | Procesando | Hay mensajes en curso; el tooltip abre el detalle (esperando / en cola / entregando) |
| 5 | Ocioso | Sin pendientes, con el tiempo desde el último procesamiento |
Bloqueada, OFF y Programador Pausado pintan la fila entera y parpadean. Una interfaz procesando pinta suavemente en azul (Entrega) o verde azulado (Recolección).
Columnas
Además del estado: En Proceso (cola pendiente), Errores, Procesadas, Últ. Proc. y una etiqueta de orden — secuencial (uno a la vez, en orden) o paralelo (varios a la vez).
Los tres contadores repiten en el encabezado el icono y el color que el pie de página usa para el total del sistema — los mismos de las tarjetas del Panel de Aplicaciones: naranja para lo que está en proceso, rojo para error, verde para procesado. Es el mismo número en tres recortes (por interfaz, por aplicación y el total), no tres conteos distintos.
El popup de detalles
El ícono de ojo, en la última columna, abre la ficha completa de la interfaz: aplicación, orden de procesamiento, estado con tiempo transcurrido, el error devuelto por el keep-alive cuando la aplicación está offline, contadores y — cuando hay cola — la Previsión de Término.
La previsión es optimista por construcción: mensajes en cola × tiempo medio de procesamiento de hoy. No considera mensajes nuevos llegando, reintentos ni interfaz detenida. Sirve para responder “¿minutos u horas?”, no para prometer un horario.
El mismo popup trae el botón Monitorear en tiempo real, que lleva al monitor de la interfaz.
Filtros
Aplicación e Interfaz (selección múltiple), pills de categoría de conexión y, a la derecha, tres chips de recorte: Todas, En Proceso y Errores. Los dos últimos son acumulativos, y la pantalla abre con los dos marcados — que es el recorte de quien llega a trabajar: lo que está parado y lo que falló. Todas limpia el recorte y muestra el panorama completo.
Por eso, en una planta sin backlog y sin errores, lo normal es ver la taza de café y el mensaje “¡Ningún mensaje pendiente de entrega!”.
El filtro de Interfaz y la categoría se recuerdan entre visitas (por sesión del navegador); la Aplicación viene del alcance global del encabezado.
Monitor de Mensajes — /interface-monitor

Donde el Panel de Interfaces es una tabla de pendientes, esta pantalla es un mural de ritmo: una tarjeta por interfaz, actualizada cada 5 segundos, mostrando último procesamiento, tiempo medio de procesamiento y cantidad en curso.
Sirve para la pregunta “¿esta interfaz está lenta?” — que el conteo de cola por sí solo no responde.
| Recurso | Uso |
|---|---|
| Grid / Lista | Tarjetas para acompañar, tabla para ordenar |
| Filtro Recolección / Entrega | Recorta por tipo de interfaz |
| Pills de categoría | La misma taxonomía de conexión de las otras pantallas |
| Búsqueda | Filtra por sigla de la interfaz |
| Ícono de definiciones | Abre las Definiciones de esa interfaz sin salir de la pantalla |
El tiempo medio es el promedio del tiempo de entrega de los mensajes concluidos con éxito hoy. No incluye el tiempo que el mensaje esperó en la cola antes de ser enviado — es el costo del destino, no el de la espera.
Una interfaz acumulando mensajes sin error normalmente significa bloqueo, programador pausado o destino lento — no pérdida de mensajes. Revise el estado antes de investigar el destino.
Monitor en tiempo real — /dashboard/:id/monitor

El nivel más fino: los mensajes de una interfaz, con actualización cada 1 segundo. Se llega desde el Panel de Interfaces o desde el Monitor de Mensajes — y el enlace de volver respeta de dónde vino.
Encabezado
Aplicación, interfaz, estado de bloqueo, frecuencia de la programación en texto legible (“cada 5 minutos”, “todos los días a las 2h”) y la próxima ejecución.
Para interfaces con programación por intervalo, la próxima ejecución es una estimación anclada en la última ejecución conocida — los ticks sin mensajes no graban nada. Para cron, es el horario exacto calculado a partir de la expresión.
Ventana de tiempo
Chips de 30 seg / 1 min / 2 min / 5 min / 10 min / 1 hora, más el modo Últimas N, que ignora período y día y muestra los últimos mensajes recibidos por la interfaz — pensado para interfaces que pasan días sin tráfico, donde toda ventana relativa saldría vacía.
Contadores y lista
Una franja de contadores por estado (En Proceso, Error Entrega, Error Negocio, Error Recolección, Procesada) y, debajo, la lista con ID, estado, Definición, intentos, recepción, retorno del destino, tiempo de ejecución y tiempo total en la mensajería.
El ícono de origen distingue mensaje externo (entró por la API, con la IP de quien envió) de mensaje interno (reenviado desde otro mensaje, con el ID de origen). Hacer clic en cualquier fila abre el detalle completo, con payload e historial de intentos.
El mensaje del Banco de Pruebas aparece en la lista con el frasco ámbar junto al estado. Los contadores de arriba no lo cuentan, así que la lista puede tener más filas que su suma — el frasco es lo que explica la diferencia.
Cuando la interfaz tiene más de una Definición, un filtro permite aislar una de ellas. Y si la interfaz no tiene ninguna Definición registrada, la pantalla lo avisa explícitamente — la causa más silenciosa de “no llega nada”.
Cockpit — /cockpit

Wallboard pensado para TV o panel de planta. Muestra el estado consolidado de las aplicaciones en letras grandes, con actualización automática cada 15 segundos. Exhibe solo estado agregado — nunca payload de mensaje. Cada tarjeta trae sigla, prioridad, ON/OFF, tiempo en el estado actual y un botón de información con las observaciones registradas en la Aplicación.
Una aplicación offline deja la tarjeta roja y pulsando, y el título de la pestaña parpadea, para llamar la atención incluso con el navegador minimizado.
Qué se cayó
Una tarjeta roja dice que la Aplicación está fuera; la primera pregunta de quien atiende, sin embargo, es qué se cayó — ¿el broker MQTT, la base, el servidor SAP? Por eso el tipo de conexión aparece en el pie de la tarjeta, a la izquierda de la prioridad: en una TV roja es lo primero que se lee, y la prioridad responde a la pregunta siguiente.
Al hacer clic se abre la ficha de esa Conexión Externa — nombre, dirección y configuración —, con la franja de disponibilidad de los últimos 30 días en el mismo formato de las otras pantallas. Es la misma ficha usada en los popups de Recolección y Entrega: dos pantallas describiendo la misma conexión con campos distintos sería peor que no tener el popup aquí.
Quién consigue abrirlo
Hasta agosto de 2026 esta era la única pantalla anónima del producto: quien alcanzara la dirección veía la sigla de cada Aplicación integrada, el estado de cada una, el volumen de mensajes del día y la última actividad. La decisión de producto sigue siendo la misma — la TV de la planta no tiene a nadie con sesión iniciada —, pero “sin login” pasó a significar con token, no sin credencial alguna.
Son dos caminos, y la respuesta viene recortada en cada uno:
| Camino | Qué muestra la TV |
|---|---|
| Sesión de usuario | Quien ya tiene sesión abre /cockpit directo, sin token, y ve las Aplicaciones que ve en el resto del sistema — las de sus propias Interfaces |
| Token de wallboard | La TV abre sin login, y muestra las Aplicaciones de ese token. Sin alcance definido, todas |
Ninguno de los dos: la pantalla pide el token, con una caja para pegarlo. Distingue nunca hubo token en este navegador de el token guardado fue rechazado (revocado o vencido) — el segundo mensaje es lo que evita buscar defecto en la TV cuando el problema es el token.
Los tokens se crean en Configuración → Wallboard, que también entrega la URL lista para pegar en el navegador de la TV.
El recorte por sesión corrigió de paso una asimetría que nadie había notado: el Cockpit mostraba todas las Aplicaciones incluso a un usuario restringido a una Interfaz. Era la única pantalla del producto sin recorte.
Elegir qué aparece
El botón Elegir aplicaciones exhibidas filtra el panel. La elección vale solo en ese navegador (queda en el caché local), lo que permite tener una TV en expedición mostrando un recorte y otra en mantenimiento mostrando otro, desde la misma instalación.
Lo que se guarda es la lista de aplicaciones ocultas, no la de las visibles. Así, una Aplicación creada después aparece sola en el panel: un panel de monitoreo tiene que fallar mostrando de más, nunca de menos.
El Cockpit también respeta el nombre y el logotipo definidos en Configuraciones → Apariencia, y el idioma configurado en el sistema.