Volver a la wiki

Descripción

Modelo Django que representa una instancia del Local Agent conectada a la organización. Registra su identidad, estado de conexión, rol en la flota (primary/secondary) y telemetría operativa.

Campos

Identificación

CampoTipoDescripción
agent_idUUID, PKIdentificador único del Agent generado en el binario.
organizationFK(Organization)Organización propietaria del Agent.
hostnamestr(128)Nombre del equipo donde corre (ej: OFICINA-PC).

Estado de conexión

CampoTipoDescripción
statusstr(20)“online” u “offline”.
last_seenDateTimeISO 8601 del último heartbeat recibido.
connected_atDateTimeISO 8601 de la conexión actual.
disconnected_atDateTime, nullableISO 8601 del último desconexión (NULL si online).

Flota y redundancia

CampoTipoDescripción
rolestr(20)“primary” o “secondary” — si es una flota de 2+ agentes.
sentinel_activebool¿Hay un monitor Sentinel conectado a este Agent?
disconnects_7dint, default=0Contador de desconexiones largas (gap ≥10 min) en los últimos 7 días.

Versión del Agent

CampoTipoDescripción
agent_versionstr(20)Versión del binario (ej: “2.18.0”).

IP de la LAN (v2.16.1+)

CampoTipoDescripción
ip_addressstr(45), nullableIP interna (IPv4/IPv6) del Agent. Reportada por /api/agent/agent_status y validada server-side. NULL si no disponible.

Portabilidad del equipo (v2.15+)

CampoTipoDescripción
has_batterybool, nullable¿El equipo corre en un portátil? Reportado por /api/agent/agent_status. Usado por el Sentinel para avisos de batería baja. NULL si Agent < 2.15.

Telemetría del proceso (v2.18.0 · v1.65.0 · task #209)

CampoTipoDescripción
healthJSONField, nullableNuevo en v1.65.0: snapshot del bloque health del último heartbeat (cada 30s). Contiene métricas del propio proceso del Agent: cpu_percent (float 0–100), mem_mb (int), db_mb (float), pending_rows (int), last_sync_age_s (int). NULL si Agent < 2.18.0 o sin heartbeat reciente. Persistido saneado por el consumer (solo claves conocidas, rechaza payloads arbitrarios).

Métodos públicos

mark_online()

Marca el Agent como online, actualiza last_seen y connected_at.

mark_offline()

Marca el Agent como offline, actualiza disconnected_at.

note_reconnect_gap(duration_seconds)

Registra una desconexión de larga duración (≥10 min) para el cálculo de disconnects_7d.

disconnects_7d (propiedad)

Retorna el número de desconexiones largas en los últimos 7 días (agregación de note_reconnect_gap).

Casos de uso

Fleet Manager (web)

Observatory (web)

API /api/agent/fleet

Dashboard home (línea marginal)

Retrocompatibilidad

Consideraciones de seguridad

Véase también

Subir