Volver a la wiki

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

Implementación

  1. SaaS → Agente, qué interfaces sondear (terminal/services.py::extra_snmp_interfaces): de selected_interfaces del target descarta la principal, las que están down y las de ifSpeed 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).
  2. Agente, dataclass del target (terminal/agent/sentinel/scheduler.py): SentinelTarget.snmp_interfaces nuevo campo; _drop_prev_counters(tid) limpia la línea base de la interfaz principal (clave tid) y las de las adicionales (claves "tid:ifIndex") cuando el target se reconfigura o se borra.
  3. Agente, sondeo (terminal/agent/sentinel/snmp_bandwidth.py): extra_interfaces(target) calcula qué ifIndex adicionales tocan; snmp_poll_bandwidth acepta un iface_index opcional 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étrica snmp_if_<in|out|errors|discards>_<ifIndex>.
  4. Ingest (terminal/api/sentinel_ingest.py::map_interface_metric): traduce esas métricas a las series de VictoriaMetrics snmp_if_bandwidth_in/out_mbps y snmp_if_errors/discards_per_min, con etiquetas interface/ifdescr (el nombre sale de ifdescr_lookup sobre selected_interfaces del target). Los nombres son DISTINTOS de los de la interfaz principal (snmp_bandwidth_*) — las gráficas actuales no cambian.
  5. A10 — job_key del deep discovery (terminal/api/sentinel_ingest.py::job_keys_for): con job_key que 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.py y network/api/discovery.py ahora mandan el job_key en 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]]).
  6. A47 — un solo default de cadencia: DEFAULT_TARGET_INTERVAL sustituye los dos valores que convivían (30 en el dataclass del scheduler del Agente, 60 en la config del store) por una única constante, en scheduler.py y terminal/agent/core/store.py.
  7. Columna snmp_interfaces nueva en el SQLite del Agente (terminal/agent/core/store.py).

Tests

Commits relacionados

Límite honesto

Véase también

Subir