AIInsight · Modelo monitoring
Propósito
AIInsight es el registro central del diagnóstico generado por CNS (CreaRack Network Sentinel). Cada instancia encapsula el análisis de una anomalía: causa raíz detectada por IA, comandos correctivos sugeridos, nivel de riesgo y trazabilidad ITSM completa (SLA, grupo de incidentes, runbook). Transita por el ciclo pending → executing → applied/acknowledged/failed/expired.
Contrato
Campos principales:
| Campo | Tipo | Descripción |
|---|---|---|
incident_id | UUIDField | Identificador único global auto-generado |
case_number | PositiveIntegerField | Secuencial por organización (CNS-000042) |
organization | FK(Organization) | Tenant propietario |
target | FK(MonitoringTarget) | Dispositivo que originó la anomalía |
summary | CharField(200) | Resumen breve |
root_cause | TextField | Causa raíz identificada |
confidence_score | FloatField | Confianza del modelo (0.0-1.0) |
osi_layer | IntegerField(null) | Capa OSI afectada (1-7) |
risk_level | TextChoices | LOW / MEDIUM / HIGH |
commands | JSONField | Comandos correctivos |
rollback_commands | JSONField | Comandos de reversión |
status | TextChoices | pending/executing/applied/acknowledged/expired/failed |
ai_provider | CharField(20) | gemini o static |
anomaly_trigger | TextField | Descripción original de la anomalía |
raw_snmp_data | JSONField(null) | Telemetría SNMP cruda |
raw_ssh_logs | TextField(null) | Logs SSH crudos |
sla_ack_deadline | DateTimeField | Límite SLA para acknowledgement |
sla_resolve_deadline | DateTimeField | Límite SLA para resolución |
sla_ack_breached | BooleanField | Flag de brecha SLA |
incident_group | FK(IncidentGroup, null) | Correlación (SET_NULL) |
known_issue | FK(KnownIssue, null) | Problema conocido (SET_NULL) |
suggested_runbook | FK(Runbook, null) | Runbook auto-asignado |
expires_at | DateTimeField | TTL: created_at + episode_ttl() — 4h por defecto, 48h si category=CONNECTIVITY (desde v1.87.2, task #239) |
Métodos y propiedades:
case_id— etiqueta formateadaCNS-XXXXXX.is_expired—Truesitimezone.now() > expires_at.is_actionable—TruesiPENDING, no expirado ycommandsno vacío.episode_ttl()— (v1.87.2) devuelve el TTL del episodio a aplicar: 48h sicategory == Category.CONNECTIVITY, 4h en el resto. Una avería de conectividad se cierra por recuperación (auto_resolve_connectivity_insights), no por esta caducidad — la caducidad es solo red de seguridad para equipos que el Agente deja de reportar del todo.save()— auto-asignaexpires_at(+episode_ttl()) y auto-incrementacase_numberpor org bajo un advisory lock de PostgreSQL (pg_advisory_xact_lock, namespace_CASE_LOCK_NAMESPACE=4272— distinto del4271de la flota enterminal/fleet_lifecycle.py) conlock_timeout='3s'. Antes era un leer-luego-escribir sin bloqueo que chocaba contraunique_case_number_per_orgcuando dos insights de la misma org se creaban a la vez (hallazgo #20); el lock es de asesoramiento (no bloquea la fila real decore_organization, que otras vistas también escriben) para no colgar el ORM async bajo el Daphne único de PROD — cola de auditoría B, task #286, 04-09-2026 (commitfbcfec01).
Meta:
- Orden:
-created_at. - Índices:
(organization, status),(target, -created_at),(status, expires_at),(status, sla_ack_deadline). unique_together:(organization, case_number).
Dependencias entrantes
| Módulo | Archivo | Rol |
|---|---|---|
insight_service | monitoring/services/insight_service.py | Crea, aplica, revierte, expira — orquesta ciclo de vida |
escalation_service | monitoring/services/escalation_service.py | Escala pending/executing según EscalationPolicy |
correlation_service | monitoring/services/correlation_service.py | Agrupa en IncidentGroup por target/subnet/causa |
sla_service | monitoring/services/sla_service.py | Calcula deadlines, detecta brechas, MTTA/MTTR |
API insights | monitoring/api/insights.py | REST: consulta, acknowledge, purge |
API insight_execution | monitoring/api/insight_execution.py | Endpoint de aplicación vía Agent — apply/rollback exigen Agente conectado antes de mutar el insight y revierten el estado si el despacho falla (cola de auditoría B, task #286) |
Dependencias salientes
core.Organization— FK CASCADE.monitoring.MonitoringTarget— FK CASCADE.core.User— 3 FKs opcionales:applied_by,acknowledged_by,revised_by.monitoring.IncidentGroup— FK SET_NULL.monitoring.KnownIssue— FK SET_NULL.monitoring.Runbook— FK SET_NULL (auto-asignado por_match_runbook()).AIInsightAuditLog— una entrada por transición.monitoring.consumers.broadcast_insight— difusión WS al Observatory, gated porcns:viewdesde la cola de auditoría B.
Ejemplos
# Creación desde insight_service.create_insight()
insight = await AIInsight.objects.acreate(
organization=org,
target=target,
summary=result.diagnosis.summary[:200],
root_cause=result.diagnosis.root_cause,
confidence_score=result.diagnosis.confidence_score,
risk_level=result.recommendation.risk_level,
commands=result.recommendation.commands,
rollback_commands=result.recommendation.rollback_commands,
status=AIInsight.Status.PENDING,
ai_provider=provider.name,
anomaly_trigger=anomaly_description,
)
Rate limiting: máx 5 insights/dispositivo/hora y 100/tenant/hora. Si Gemini falla, fallback a static_rules.
Related
entity--monitoring--model--monitoringtarget— origen de cada insight.entity--monitoring--model--insightconversation— Q&A posterior al diagnóstico.concept--monitoring--cns— sistema productor de insights.feature--monitoring--sentinel-episodio-unico— dedup por episodio y su TTL (episode_ttl()).incident--20260904--cola-auditoria-b-cns-insights— tanda de auditoría que introdujo el advisory lock decase_numbery el gate de permiso del WS.
Véase también
- [[entity—monitoring—model—monitoringtarget]]
- [[entity—monitoring—model—insightconversation]]
- [[concept—monitoring—cns]]
- [[feature—monitoring—sentinel-episodio-unico]]
- [[incident—20260904—cola-auditoria-b-cns-insights]]
Referenciado desde
- Barra de Integridad F3: Veredicto "Cambio Real" abre incidencia CNS/ITSM
- CNS — CreaRack Network Sentinel
- Cola de auditoría B (task #286): CNS e insights de IA — WS sin gate de permiso, apply/rollback sin Agente, prompts sin sanear
- Deduplicación de episodios de Sentinel — un insight por avería (v1.66.15)
- Edge AI: propagación de google-genai SDK a CNS, Network Tutor y MIB Assistant
- Guía ITSM — CreaRack Network Sentinel
- Incidente: Informante reportaba "0 alertas" con 128 devices caídos (s56)
- ITSM — SLA, Escalación y Runbooks
- MonitoringTarget · Modelo monitoring
- Ordenamiento por fecha en tabla CNS (v1.61.4)
- Servicio: Incidencias documentales sin comandos (create_drift_insight)
- Servicio: Puente cola de reconciliación → CNS/ITSM (integrity_itsm.py)
- SLAPolicy · Modelo monitoring