CreaRack-SL

Agente 2.24.0 — task #270: rotación de logs, timeout de insights, y por qué no hay bandwidth (A19)

User value

El Local Agent (el programa que cada organización instala en un PC de su red para vigilarla) pasa a la versión 2.24.0, junto con el SaaS a v1.86.0. Cuatro mejoras:

  • El registro del Agente ya no crece sin límite: agent.log rota en ficheros de 5 MB (hasta 20 MB en total entre el actual y 3 copias) y ya no se borra al reiniciar — el arranque anterior, y una posible caída, siguen legibles después de reiniciar el servicio.
  • Los avisos de IA (insights) tardan más en darse por vencidos: el tope de espera para que un aviso llegue del servidor sube de 30 a 90 segundos. En producción, generar un aviso tarda de media 40 segundos — con el límite viejo, la mitad de los envíos se daban por fallidos en el Agente aunque el aviso sí se había creado en el servidor.
  • Por qué un equipo no reporta tráfico, explicado (A19): cuando un equipo deja de mandar datos de ancho de banda, la sección Bandwidth del Observatory ya no calla — muestra “No bandwidth data: …” con el motivo real (sin respuesta, contador de octetos roto, interfaz SNMP equivocada, valor descartado por absurdo, etc.), en vez de dejar el hueco sin explicación.
  • El barrido detallado (deep discovery) ya no se corta en silencio: el límite de filas por consulta SNMP sube de 200 a 1000, y si aun así se llega al tope, el Agente lo avisa en su registro en vez de devolver una tabla que parece completa sin serlo. Además, el descubrimiento profundo, el descubrimiento SNMP y la prueba de OIDs ya respetan el puerto SNMP configurado del equipo — antes siempre usaban el puerto 161 por defecto, aunque el equipo tuviera otro configurado.

Cómo usarla

Transparente: no requiere ninguna acción, solo el auto-update del Agente a 2.24.0. La nota “No bandwidth data: …” aparece sola en la ficha de cualquier equipo con SNMP habilitado que deje de producir datos de tráfico.

Implementación

  • terminal/agent/platform_mod/logging_config.py — RotatingFileHandler (5 MB × 3 copias, encoding="utf-8" explícito) sustituye al FileHandler(mode="w") que truncaba el log en cada arranque.
  • terminal/agent/sentinel/scheduler.py (A19) — SentinelScheduler.note_producer(target_id, loop_name, ok, reason) alimenta _producer_state; producer_issues() devuelve solo los targets con algún bucle SNMP (bandwidth/extras/fast) sin producir, compacto para el heartbeat. Se expone en /sentinel/status bajo la clave producers.
  • terminal/agent/sentinel/insight_reporter.py — timeout de envío de insights 30 → 90 s.
  • terminal/agent/network/deep_discovery.py / config.py — SNMP_WALK_MAX_ROWS 200 → 1000, con WARNING en el log al tocar el tope; snmp_get/snmp_walk/snmp_discover_device aceptan port y el deep discovery, snmp-discover y probe-oids lo honran.
  • monitoring/models.py — MonitoringTarget.producer_state (JSONField, null, migración 0033): último estado por bucle SNMP que reporta el heartbeat; MonitoringTargetOut.producer_state lo expone en la API.
  • terminal/consumers.py (AgentConsumer) — sanitize_producers() valida el payload del heartbeat (bucles y motivos de lista cerrada, IDs enteros, tope 500 targets) y _apply_producers() persiste producer_state en los targets que fallan y lo limpia (NULL) en los que vuelven a producir o dejan de reportarse.
  • static/js/pages/observatory/ObservatoryTabs.js — getProducerNote() pinta la nota bajo la cabecera de la sección Bandwidth cuando producer_state.bandwidth existe.
  • terminal/api/agent_credentials.py (profile-credentials) — devuelve snmp_port del target enlazado, para que el discovery lo use.
  • monitoring/services/ai_providers/google_genai.py — error explícito si el modelo devuelve JSON que no es un objeto (fallo visto en PROD el 28-08-2026).

Detalle completo del mecanismo A19 (motivos posibles, formato del heartbeat, saneado): [[crearack-tech—architecture—sentinel-mode]] §4.2.

Tests: tests/agent/test_agent_2240.py, tests/api/test_agent_2240_saas.py; dos tests antiguos actualizados para aceptar el nuevo campo.

Commits relacionados

  • 003d4f95 (28-08-2026) — feat(agent): Agente 2.24.0, task #270 + #13/#14 de la deuda #274, PR #450.
  • bb3fb7e8 (27-08-2026) — release anterior del Agente, ver [[feature—monitoring—agente-2-23-0-auditoria-261]].

Véase también

  • [[crearack-tech—architecture—sentinel-mode]]
  • [[feature—monitoring—agente-2-23-0-auditoria-261]]
  • [[feature—monitoring—deuda-274-tanda-a]]
  • [[entity—monitoring—model—monitoringtarget]]
  • [[crearack—terminal—local-agent]]
  • [[local-agent-auto-update-tech]]
  • [[crearack-tech—guides—sentinel-24-7-test]]