InfraGuard

Alertas

Cree políticas de grupo de alerta que agrupan condiciones de sistema, web, base de datos y seguridad; ante un incumplimiento notifican automáticamente a los destinatarios por SMS y correo.

Descripción general — qué hace

Infraestructura ▸ Alertas (/infra/alert) es la consola de grupos de alerta (políticas). Un operador añade condiciones de cuatro áreas (sistema / web / BD / seguridad) a una única política (infr_alert_policy), ajusta en pantalla el factor de cada umbral y, cuando se produce un incumplimiento, los destinatarios del grupo (infr_alert_recipient) reciben una notificación por SMS/correo de forma automática.

Sustituye a la antigua página «Capacidad y alertas» (/infra/capacity), que ahora redirige aquí.

Características clave:

Esta pantalla gestiona únicamente políticas, alertas e historial de envíos. Para gráficas por servidor consulte Servidores; para disponibilidad web, Servicio ▸ Web; para carga de BD, Servicio ▸ Base de datos. Los valores predeterminados de los umbrales se definen en Política de operaciones.

Cuándo usarla

Disposición

Cuadrícula de tarjetas de política

Cada política se muestra como una tarjeta que resume su interruptor de actividad, la insignia de gravedad, las áreas habilitadas y el número de destinatarios, con estas acciones:

Acción Descripción Acceso
Interruptor activo/pausado is_active — si el planificador la evalúa nivel≥2
Editar Modal de áreas, condiciones, canales y destinatarios nivel≥2
Comprobar ahora Evaluar y enviar esta política de inmediato (run) nivel≥2
Probar Enviar ahora un correo/SMS de prueba a los destinatarios (test) nivel≥2
Eliminar Borrar la política y sus destinatarios nivel≥2
Reordenar arrastrando Orden de visualización/evaluación (seq, reorder) nivel≥2

Modal de edición (áreas, condiciones, canales, destinatarios)

Flujo de alertas recientes

Muestra infr_alert ordenado por last_seen descendente, hasta 60 filas (sondeo cada 30 s). Cada fila muestra el valor observado, el umbral, el count agregado y los envíos ok/total (desde infr_alert_delivery), con las transiciones de estado [Confirmar] y [Cerrar].

Cómo usarla

1) Cree una política

  1. [Nuevo grupo de alerta] → introduzca nombre, gravedad y enfriamiento.
  2. Habilite las áreas que quiera vigilar.
  3. Para cada área, habilite condiciones y ajuste los factores de umbral. Los valores predeterminados se rellenan desde alertDefaults() de Política de operaciones.
  4. Elija los canales (SMS/correo) y añada destinatarios.
  5. Guarde.

2) Catálogo de condiciones

Sistema (server_status, ventana de seq)

Condición Interruptor Factor Predeterminado Métrica emitida
Carga media por encima de sys_load_on sys_load_max 20 load_avg (>20, por servidor)
Disco libre por debajo de sys_disk_on sys_disk_free_mb 500 disk_free (<500MB)

Web (sondeo HTTP en vivo · infr_web_cert)

Condición Interruptor Factor Predeterminado Métrica emitida
Servicio caído (estado ≠ esperado) web_code_on web_expect_code 200 http_status
Latencia por encima de web_latency_on web_latency_ms 5000 latency
Caducidad de certificado inminente web_cert_on web_cert_hours 48 cert_expiry

Con solo habilitar «Caducidad de certificado inminente» se vigila el certificado de todos los sitios. No funciona por sitio: es un barrido global de todos los dominios.

Base de datos (última muestra de infr_db_metric)

Condición Interruptor Factor Predeterminado Métrica emitida
Cola de espera creciente db_waiting_on db_waiting_max 5 db_waiting (>=5)
Consultas lentas por hora db_slow_on db_slow_per_hour 60 db_slow (slow_qps×3600 >= 60)

Seguridad (tablas de detección de legacy_glory · compuesta)

La ventana de evaluación es sec_window_min (10 min de forma predeterminada). Cualquier señal que supere su umbral provoca un incumplimiento.

Condición Interruptor Factor Predeterminado Origen
Gravedad + recuento de IDS sec_ids_on sec_ids_severity, sec_ids_count 2, 20 suricata_alert_ct (gravedad≥S, recuento en ventana≥N)
Pico de bloqueos por anomalía de IA sec_kitsune_on sec_kitsune_count 5 kitsune_detail_log (is_blocked=1, recuento≥N)
Pico de IP recién bloqueadas sec_blacklist_on sec_blacklist_count 10 blacklist_info (created_at nuevo dentro de la ventana, recuento≥N)

Relacionado: Amenazas · Detecciones · Lista de bloqueo.

3) Comprobar ahora / Probar

4) Evaluación automática (programación)

Las políticas activas se evalúan y se envían automáticamente cada minuto.

Schedule::command('infr:eval-alerts --quiet-if-ok')
    ->everyMinute()
    ->withoutOverlapping(2)
    ->onOneServer()
    ->when($is_leader);

Ejecuciones manuales:

# Evaluar todas las políticas activas (una sola pasada, termina después — no es un demonio)
php artisan infr:eval-alerts

# Solo una política
php artisan infr:eval-alerts --policy=12

# Silenciar la salida cuando no hay incumplimientos (predeterminado del planificador)
php artisan infr:eval-alerts --quiet-if-ok

infr:eval-alerts es un comando de una sola pasada que termina (recorre las políticas y retorna). Nunca lo convierta en un demonio de bucle infinito: lanzar desde el planificador un demonio que nunca termina agota las conexiones compartidas de base de datos (véase la lección de la fuga de conexiones de pulse:check). El planificador arranca con seguridad una instancia nueva cada minuto.

Orígenes de datos

Tablas de escritura (nuevas infr_)

Tabla Migración Función
infr_alert_policy 000700 Grupo de alerta (política). JSON de scopes/targets/conditions/channels + gravedad, cooldown_min, seq
infr_alert_recipient 000701 Destinatarios por política (en línea). email/phone + via_mail/via_sms/is_active/seq
infr_alert 000702 Instancia de alerta (registro de disparo / cola de triaje). Clave de deduplicación (policy_id, metric, entity_key, status='open'), enfriamiento por notified_at
infr_alert_delivery 000703 Historial de envíos. channel/address/ok/provider_code/message_id/error/latency_ms

Orígenes de lectura (heredados + nuevos, solo lectura)

Flujo de deduplicación / enfriamiento / cierre automático

  1. AlertEvaluator::evaluate($policy) → matriz de candidatos a incumplimiento por área activa. Las excepciones de un área quedan aisladas (que falle un área no bloquea al resto).
  2. AlertDispatcher::handle($policy, $breaches):
    • Cada incumplimiento se busca por (policy_id, metric, entity_key, status=open) → si se encuentra, se actualiza y count++; si no, se inserta uno nuevo (first_seen, count=1, notified_at=null).
    • Notificable = nuevo O notified_at null O notified_at <= now - cooldown_min.
    • Cierre automático: las alertas abiertas de esta política que no aparecen entre los incumplimientos de esta ronda → status='closed'.
    • Envío por lotes: las alertas notificables se agrupan en un único mensaje por destinatario y canal (cuerpo de 8 líneas como máximo, con «+N more» para el excedente; SMS limitado a 140 caracteres). Tras el envío, cada objetivo pasa a notified_at=now.
    • Una fila de infr_alert_delivery por cada (destinatario, canal).

Acceso

Operación Nivel mínimo Auditoría
Ver consola/lista/flujo (index/list/feed) 1 (lectura) —
Guardar/eliminar/reordenar política (save/delete/reorder) 2 (escritura) alert_policy.create / .update / .delete
Confirmar/cerrar alerta 2 alert.ack / alert.closed
Comprobar ahora (run) 2 alert.fire al enviar
Envío de prueba (test) 2 alert.test
Envío automático programado (sistema) alert.fire

Escala de niveles: demo=1 · staff=5 · admin=10. Las lecturas requieren nivel≥1; las escrituras y los envíos requieren nivel≥2. Todas las operaciones destructivas o de envío quedan registradas en infr_audit_log (véase Registro de auditoría). Los proveedores de los canales de envío los configura un administrador (nivel≥10).

Resolución de problemas y preguntas frecuentes

P. He habilitado una condición pero no llega ninguna alerta.

  1. Confirme que la política está activa y que el planificador (schedule:work / supervisor de producción) está en ejecución.
  2. No hay proveedor de canal: consulte el aviso de la tarjeta y configure un proveedor predeterminado en Adaptadores de correo/Adaptadores SMS.
  3. Compruebe que la intersección de via_mail/via_sms del destinatario con los canales de la política no está vacía y que el correo y el teléfono están rellenados.
  4. Durante el enfriamiento se suprimen los reenvíos (cooldown_min, 30 min de forma predeterminada). Use [Comprobar ahora] para verificarlo al momento, pero una alerta ya notificada solo se reenvía cuando pasa el enfriamiento.

P. Mis condiciones de BD/sistema siguen en silencio.

P. ¿La caducidad de certificado vigila solo un sitio concreto?

P. ¿El mismo incumplimiento se va acumulando?

P. ¿El sondeo web ralentiza la evaluación?

Relacionado

경보 — 정책 카드와 최근 경보 피드
경보 — 정책 카드와 최근 경보 피드