Descripción
Desde v1.132.8, el Deep Discovery automático que se dispara tras un re-escaneo de red ya no envía un mensaje WebSocket por perfil al Agente. En su lugar, acumula todos los perfiles elegibles de una pasada de escaneo y los despacha en un solo mensaje en lote, con concurrencia limitada a 3 SNMP simultáneos.
Problema resuelto: El primer escaneo completo del CCIB con v1.132.6 relanzó 114 Deep Discovery automáticos en ~10 segundos — un mensaje por perfil, hasta 114 lecturas SNMP simultáneas compitiendo con la monitorización en el mismo event loop del Agente.
Cambios arquitectónicos
Acumulación en caché (v1.132.6 → v1.132.8)
- Auto-sink: durante un escaneo por tandas (
bulk_enrich_hosts), los perfiles elegibles para Deep Discovery se acumulan en una lista compartidaauto_deep_sinkennetwork/services/device_discovery/rescan_hooks.py::auto_deep_discover_after_rescan. - Despacho en la última tanda: al terminar la pasada,
last_batch=Truedisparadispatch_deep_discovery_batch(), que envía TODOS los perfiles juntos en un solo mensaje al Agente. - Job único: cada re-escaneo de org recibe un
job_keycompartido (deep_discover_rescan_job_<org_id>), no uno por perfil.
Extracción de build_deep_discovery_task()
La construcción de la tarea de Deep Discovery se extrajo de dispatch_deep_discovery() a una función reutilizable. Esto permite:
- Dispatch individual:
POST /auto-provision/profiles/{id}/deep-discover(botón manual) sigue siendo uno a uno. - Dispatch en lote:
dispatch_deep_discovery_batch()usa la misma lógica para todos los perfiles de la tanda.
Configuración
- Concurrencia:
max_concurrent=3(configurable endispatch_deep_discovery_batch). - Timeout: ventana de espera según tamaño del lote (vía
job_keycon timeout de 5 minutos). - Sin secrets en el transporte: las credenciales SNMP NO viajen en la tarea; el Agente las resuelve server-side por
profile_idvíaGET /api/agent/profile-credentials/{id}.
Impacto usuario
Desde la interfaz, el comportamiento es idéntico:
- Manual: Deep Discover en una ficha → envío inmediato al Agente.
- Automático en re-escaneo: el progreso se acumula y se despacha al final de la tanda, visible en el Observable o en el Observable Monitoring.
El throughput SNMP total es más predecible: máximo 3 lecturas simultáneas, no 100+.
Commits relacionados
- v1.132.6 (PR #536): Identidad por MAC; extracción de
dispatch_deep_discovery()deprovision_stages.py. - v1.132.8 (PR #538): Batching con
last_batch,auto_deep_sink,dispatch_deep_discovery_batch().
Véase también
- [[crearack—network—discovery]]
- [[concept—network—performance-optimization]]