Buscar en la documentación

system_events

Eventos del sistema agrupados por huella (fallas, infraestructura y seguridad) y su catálogo de tipos.

2 min de lecturaVer en GitHub

Eventos relevantes del sistema: fallas que nadie ve, piezas que dejan de responder y alertas de seguridad. Lo que se repite no crea filas nuevas: suma al contador de la misma fila, identificada por su huella (ADR-0022 y ADR-0059).

system_event_types

ColumnaTipoRestriccionesDescripción
idTINYINT UNSIGNEDPK
codeVARCHAR(40)UNIQUE, NOT NULLunhandled_error, job_failed, queue_backlog, service_down, external_service_unavailable, login_locked, mfa_attempts_exceeded, reset_code_voided, reauthentication_locked, access_denied_repeated
nameVARCHAR(80)NOT NULLNombre para la pantalla
categoryVARCHAR(20)NOT NULL, CHECKfailure, infrastructure o security
severityVARCHAR(10)NOT NULL, CHECKinfo, warning o critical
created_at, updated_atTIMESTAMP

La severidad vive en el tipo: todos los eventos de un tipo pesan lo mismo, y cambiarla es editar un dato, no el código.

system_events

ColumnaTipoRestriccionesDescripción
idBIGINT UNSIGNEDPK
system_event_type_idTINYINT UNSIGNEDFK → system_event_types.id, RESTRICTQué pasó
fingerprintCHAR(64)UNIQUE, NOT NULLSHA-256 del tipo y su origen (la clase y la línea de un error, un servicio, una cuenta)
messageVARCHAR(255)NOT NULLTexto corto, sin datos sensibles; se actualiza con la última vez
contextJSONNULLDatos para entenderlo (ruta, servicio, cuenta enmascarada…). Nunca tokens, contraseñas ni contenido de jobs
occurrencesINT UNSIGNEDNOT NULL, 1Cuántas veces pasó
first_seen_at, last_seen_atTIMESTAMPNOT NULLPrimera y última vez
trace_idVARCHAR(64)NULLIdentificador de la última petición que lo produjo, para cruzarlo con los logs (vacío en la cola y el scheduler)
statusVARCHAR(15)NOT NULL, CHECK, openopen, acknowledged o resolved. Un resuelto que vuelve a pasar se reabre
status_changed_byBIGINT UNSIGNEDNULL, FK → users.id, RESTRICTQuién cambió el estado por última vez
status_changed_atTIMESTAMPNULLCuándo

Los resueltos se borran a los 90 días de resolverse (system:prune-events, configurable con SYSTEM_EVENTS_RETENTION_DAYS).

Índices

ÍndiceUso
fingerprint (único)Agrupar en una sola sentencia (INSERT … ON DUPLICATE KEY UPDATE)
(status, last_seen_at)La lista por defecto: pendientes, de lo más reciente a lo más antiguo
(system_event_type_id, last_seen_at)Filtro por tipo
last_seen_atLista sin filtros
status_changed_byClave foránea

Dónde está en el código