Ancho de banda por interfaz SNMP · Agente 2.22.0 cierra A10 y A47 de la auditoría #261
User value
Decisión de Edu (25-08): además de la interfaz principal de cada sonda SNMP (que no cambia), ahora se puede seguir el ancho de banda de hasta 8 interfaces adicionales del mismo equipo — cada una con su propia gráfica de tráfico, errores y descartes, sin datos inventados en las que están caídas o sin velocidad. De paso, el Agente local 2.22.0 cierra dos deudas técnicas que habían quedado documentadas como pendientes en ciclos anteriores de la auditoría del monitoraje (task #261): un sweep de descubrimiento profundo sobre un solo punto de acceso ya no interfiere con el contador de un sweep de toda la flota en curso, y la cadencia de sondeo por defecto deja de tener dos valores distintos según el archivo.
Qué vas a notar
- En un equipo con varias interfaces detectadas, se puede elegir alguna adicional a la principal y aparece con su propia serie de Bandwidth / Interface Errors / Discards.
- Una interfaz caída o sin velocidad (los
wds-bondde los Xirrus del CCIB, por ejemplo) no ocupa una de las 8 plazas ni pinta ceros falsos. - Lanzar el análisis profundo de un solo AP ya no adelanta el “Complete” de un sweep de flota entera que esté corriendo a la vez (y viceversa).
- La gráfica “por interfaz” dentro del Observatory todavía no existe — este cambio entrega el dato; la visualización va en el PR siguiente.
Implementación
- SaaS → Agente, qué interfaces sondear (
terminal/services.py::extra_snmp_interfaces): deselected_interfacesdel target descarta la principal, las que estándowny las deifSpeed 0, hasta un máximo de 8. Se cuelga del target en el lote WebSocket (terminal/fleet_lifecycle.py) y en el REST (terminal/api/sentinel.py). - Agente, dataclass del target (
terminal/agent/sentinel/scheduler.py):SentinelTarget.snmp_interfacesnuevo campo;_drop_prev_counters(tid)limpia la línea base de la interfaz principal (clavetid) y las de las adicionales (claves"tid:ifIndex") cuando el target se reconfigura o se borra. - Agente, sondeo (
terminal/agent/sentinel/snmp_bandwidth.py):extra_interfaces(target)calcula quéifIndexadicionales tocan;snmp_poll_bandwidthacepta uniface_indexopcional y usa la clave compuesta"tid:idx"en el diccionario de líneas base cuando sondea una interfaz que no es la principal;interface_metric_name(base, ifindex)nombra la métricasnmp_if_<in|out|errors|discards>_<ifIndex>. - Ingest (
terminal/api/sentinel_ingest.py::map_interface_metric): traduce esas métricas a las series de VictoriaMetricssnmp_if_bandwidth_in/out_mbpsysnmp_if_errors/discards_per_min, con etiquetasinterface/ifdescr(el nombre sale deifdescr_lookupsobreselected_interfacesdel target). Los nombres son DISTINTOS de los de la interfaz principal (snmp_bandwidth_*) — las gráficas actuales no cambian. - A10 — job_key del deep discovery (
terminal/api/sentinel_ingest.py::job_keys_for): conjob_keyque devuelve el Agente 2.22.0+, un resultado solo avanza ESE job; sin él (Agente antiguo), las 4 claves candidatas de siempre (comportamiento previo intacto).monitoring/services/deep_discover_service.pyynetwork/api/discovery.pyahora mandan eljob_keyen la tarea que despachan al Agente. Esto era la deuda que el ciclo 4 de la auditoría había dejado explícitamente para “el PR del Agente” (ver [[feature—monitoring—auditoria-261-ciclo-4-cableado-observatory]]). - A47 — un solo default de cadencia:
DEFAULT_TARGET_INTERVALsustituye los dos valores que convivían (30 en el dataclass del scheduler del Agente, 60 en la config del store) por una única constante, enscheduler.pyyterminal/agent/core/store.py. - Columna
snmp_interfacesnueva en el SQLite del Agente (terminal/agent/core/store.py).
Tests
tests/agent/test_bandwidth_per_interface.py(11 tests) —extra_interfaces,interface_metric_name,snmp_poll_bandwidthcon clave compuesta por interfaz, y la limpieza de líneas base de_drop_prev_counters.
Commits relacionados
ff59f8ce(2026-08-25) — feat(agent): 2.22.0 - ancho de banda por interfaz + job_key del deep discovery (A10) + cadencia por defecto única (A47) - v1.85.0 (#437).a15e327f(2026-08-24) — ciclo 1 de la auditoría #261 (métricas SNMP), predecesor directo de este cambio — ver [[feature—monitoring—auditoria-261-ciclo-1-metricas-snmp]].579c3d06(2026-08-25) — ciclo 4 de la auditoría #261, donde A10 quedó documentado como pendiente para este PR del Agente — ver [[feature—monitoring—auditoria-261-ciclo-4-cableado-observatory]].
Límite honesto
- Verificado solo contra el Xirrus de la oficina: interfaz principal gig1 (0,73/0,15 Mb/s), interfaz 3 (bridge) con serie propia, interfaz 7 (contadores a cero) sin datos inventados. Sin verificar en la red del CCIB hasta septiembre.
- La gráfica “por interfaz” del Observatory no existe todavía — este commit entrega el dato (Agente + ingest); la visualización queda para el PR siguiente.
Véase también
- [[feature—monitoring—auditoria-261-ciclo-1-metricas-snmp]]
- [[feature—monitoring—auditoria-261-ciclo-4-cableado-observatory]]
- [[entity—monitoring—service—snmp-service]]
- [[entity—monitoring—api—snmp]]
- [[concept—terminal—local-agent]]
- [[crearack—monitoring—configurar-snmp]]
- [[feature—wireless—deep-discovery-timestamp]]