Agente 2.23.0 — restos de la auditoría #261 + sensor "Agente vivo pero mudo"
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.23.0, junto con el SaaS a v1.85.6. Cuatro mejoras que no dependían de tener acceso a la red del CCIB para probarlas:
- Descubrimiento profundo más rápido: el barrido detallado de una flota de equipos (Deep Data) sondea hasta cinco dispositivos a la vez en vez de uno tras otro — un barrido de cien puntos de acceso pasa de tardar minutos a segundos.
- Aviso de Agente clonado: si alguien copia la carpeta de un Agente ya emparejado a otra máquina, el Agente lo detecta al arrancar (compara el hostname con el que se emparejó) y el widget Agent Fleet lo marca con “(clone?)”.
- La base de datos local no engorda sola: se compacta una vez por semana (VACUUM); en un caso real había llegado a 507 MB tras meses de poda sin compactar.
- Sensor “Agente vivo pero mudo”: el widget Agent Fleet añade “Samples 1h” y “SNMP 1h” — cuántas muestras de ping/SNMP llegaron de verdad a la base de métricas en la última hora frente a las esperadas. Antes, un Agente podía latir cada pocos segundos y llevar horas sin producir un solo dato de monitorización, y figuraba “online” sin más aviso.
Además se corrigió un fallo visto en PROD: cuando el Agente se autoactualiza, el proceso nuevo conecta por WebSocket antes de que el viejo cierre su conexión — y ese cierre tardío marcaba al Agente (el que sigue vivo) como desconectado y le apagaba el Sentinel, aunque los latidos seguían llegando.
Cómo usarla
- El widget Agent Fleet del Observatory muestra “Samples 1h” (verde / ámbar si <50% / rojo si 0) en el Primary con Sentinel activo. Sin VictoriaMetrics o sin targets, el sensor calla (no rompe el widget).
- Un Agente marcado “(clone?)” en el widget indica que las credenciales de esa máquina se emparejaron en otra — hay que re-emparejarlo.
- El resto (paralelismo del deep discovery, VACUUM semanal, logs a DEBUG, fix de la carrera del WS) es transparente: no requiere acción del usuario, solo el auto-update del Agente a 2.23.0.
Implementación
terminal/api/fleet.py—sentinel_liveness(org): comparacount_over_timedeping_reachable/ping_packet_loss_percenten VictoriaMetrics la última hora contra lo esperado por cadencia de los targets (PING_CAPcomo tope real), y hace lo mismo para SNMP contra la media horaria de los últimos 7 días del propio Agente (así detecta el caso real: ping seguía llegando pero SNMP caía a 0). Solo se calcula para el Primary con Sentinel activo; se añade a la respuesta deGET /api/agent/fleetvíaAgentInstanceOut.terminal/consumers.py(AgentConsumer) —_is_superseded(): endisconnect(), siACTIVE_AGENTS[agent_id]ya apunta a OTRA conexión (el proceso nuevo ya se registró), la desconexión del proceso viejo no toca el registro ni dispara failover — solo abandona sus grupos de canal. También añadehostname_mismatcha la whitelist de campos dehealthque acepta del latido.terminal/agent/core/auth.py(AuthManager) — guardapaired_hostname(víasocket.gethostname()) en las credenciales cifradas al emparejar; al cargarlas, compara con el hostname actual y exponehostname_mismatch.terminal/agent/network/deep_discovery.py— nuevo helperrun_deep_discover_tasks(handler, tasks, max_concurrent)compartido entre el camino WS y REST:asyncio.Semaphore(max_concurrent)(default 5, el mismo valor que ya usaba el SaaS) en vez de un bucle secuencial; cada resultado devuelve sujob_key.terminal/agent/core/store.py(TimeSeriesStore) —maybe_vacuum(): VACUUM demetrics.dbuna vez por semana tras la poda, con marcalast_vacuum_tsen config para no repetirlo cada arranque.terminal/agent/version.py— bump aAGENT_VERSION = "2.23.0"con el changelog detallado de las cinco piezas.- Tests nuevos:
tests/agent/test_agent_2230.py(paralelismo acotado, job_key, VACUUM) ytests/api/test_fleet_liveness.py.
Límite honesto (del propio CHANGELOG): el “TimeoutError mudo” de la tarea #223 queda sin reproducir, y la parte de A19 que explica motivo por target (“por qué no hay bandwidth” en la ficha de un equipo) se deja para otro ciclo.
Commits relacionados
bb3fb7e8(27-08-2026) — feat(agent): 2.23.0, PR #443.
Véase también
- [[entity—terminal—service—app-main]]
- [[entity—terminal—service—sync-throttle]]
- [[crearack-tech—architecture—sentinel-mode]]
- [[crearack—terminal—local-agent]]
- [[local-agent-auto-update-tech]]
- [[crearack-tech—guides—sentinel-24-7-test]]