Ir al contenido

El vigilante de actividad

Un sistema puede estar perfectamente sano y no producir nada. Un cron que lleva tres días fallando, una cola con trabajo de anteayer, un puesto con el presupuesto agotado desde el día 8: todo eso devuelve 200, no escribe un solo error en el log y no entrega. El reloj dispara y Docker mantiene el proceso vivo, pero ninguna de las dos cosas responde a la pregunta que importa.

El vigilante la responde con SQL, cada seis horas (VIGILANTE_HORAS, 0 lo apaga). No gasta tokens y no opina: las señales son hechos contables.

Señal Qué mira Gravedad
Crones rotos Aprobados con 2 o más fallos seguidos grave
Cola atascada Mensajes esperando más de 2 h grave
Presupuestos agotados Puesto con el gasto del mes por encima de su tope grave
Solicitudes paradas Recursos pedidos hace más de 2 días aviso
Entregas sin verificar Trabajo hecho que nadie dio por bueno (3 días) aviso
Tareas encalladas Tareas en curso desde hace más de 3 días aviso

Grave significa que algo está parado y no se arregla solo. Aviso, que va lento.

  1. Lo escribe en organtia.vigilancia, una fila por pasada. Sin histórico no se distingue un problema puntual de algo que lleva una semana repitiéndose.
  2. Avisa al tablero en vivo si es grave.
  3. Se lo deja al CEO en su bandeja de avisos, para que en su próximo turno se ocupe. Detectar sin que nadie actúe no arregla nada. Solo lo grave: si cada cosa lenta llegara a dirección, la bandeja se convertiría en ruido y se dejaría de leer, que es peor que no tenerla.

Se consulta en GET /vigilante.json:

{
"nivel": "aviso",
"resumen": "1 aviso(s): 1 solicitud(es) de recurso esperando más de 2 días",
"hallazgos": [
{
"clave": "solicitudes_paradas",
"nivel": "aviso",
"detalle": ["Acceso al ERP (alta), pedida el 01-11"]
}
]
}
  • Un hilo propio, no un cron de Agno: no hace falta despertar a ningún modelo para contar filas, y un cron gastaría turnos en algo que es una consulta.
  • Una sonda rota no ciega a las demás: si una consulta revienta, se registra y las otras cinco siguen mirando. Un vigilante que se calla cuando falla una parte es peor que no tenerlo.
  • Una señal existe cuando hay casos, no cuando la consulta se ejecutó: _sonda cuenta las filas y revisar descarta las que traen cero. Sin esto, el primer vigilante anunciaba «0 crones con fallos» con gravedad grave — es el fallo que se coló y que las pruebas cazaron.
  • Nunca lanza: el bucle captura todo y sigue. Si el vigilante se muere, se muere el único que mira.