# 🛡️ AntiScam AI Pro - Reglas de Alertas # Configuración de alertas para monitoreo proactivo groups: - name: antiscam_ai_alerts rules: # Aplicación no disponible - alert: AntiScamAIDown expr: up{job="antiscam-ai"} == 0 for: 1m labels: severity: critical service: antiscam-ai annotations: summary: "AntiScam AI está caído" description: "La aplicación AntiScam AI no responde desde hace {{ $value }} minutos." # Alto uso de CPU - alert: HighCPUUsage expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: warning service: system annotations: summary: "Alto uso de CPU" description: "CPU usage está en {{ $value }}% en {{ $labels.instance }}" # Alto uso de memoria - alert: HighMemoryUsage expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85 for: 5m labels: severity: warning service: system annotations: summary: "Alto uso de memoria" description: "Memoria usage está en {{ $value }}% en {{ $labels.instance }}" # Poco espacio en disco - alert: LowDiskSpace expr: node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100 < 10 for: 5m labels: severity: critical service: system annotations: summary: "Poco espacio en disco" description: "Solo queda {{ $value }}% de espacio libre en {{ $labels.instance }}" # Base de datos no disponible - alert: PostgreSQLDown expr: up{job="postgres"} == 0 for: 1m labels: severity: critical service: database annotations: summary: "PostgreSQL está caído" description: "La base de datos PostgreSQL no está disponible" # Redis no disponible - alert: RedisDown expr: up{job="redis"} == 0 for: 1m labels: severity: warning service: cache annotations: summary: "Redis está caído" description: "El servicio Redis no está disponible" # Alto número de errores HTTP - alert: HighErrorRate expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1 for: 2m labels: severity: warning service: antiscam-ai annotations: summary: "Alta tasa de errores HTTP" description: "Tasa de errores 5xx es {{ $value }} req/sec" # Tiempo de respuesta alto - alert: HighResponseTime expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 2 for: 3m labels: severity: warning service: antiscam-ai annotations: summary: "Tiempo de respuesta alto" description: "P95 de tiempo de respuesta es {{ $value }}s" # Muchos análisis fallidos - alert: HighAnalysisFailureRate expr: rate(analysis_failures_total[5m]) > 0.05 for: 2m labels: severity: warning service: antiscam-ai annotations: summary: "Alta tasa de fallos en análisis" description: "Tasa de fallos en análisis es {{ $value }} fallos/sec" # Carga de usuarios muy alta - alert: HighUserLoad expr: active_users > 1000 for: 5m labels: severity: info service: antiscam-ai annotations: summary: "Carga alta de usuarios" description: "{{ $value }} usuarios activos actualmente" - name: security_alerts rules: # Intentos de login fallidos - alert: HighFailedLogins expr: rate(failed_login_attempts_total[5m]) > 5 for: 2m labels: severity: warning service: security annotations: summary: "Muchos intentos de login fallidos" description: "{{ $value }} intentos de login fallidos por segundo" # Actividad sospechosa de IPs - alert: SuspiciousIPActivity expr: rate(suspicious_requests_total[5m]) > 10 for: 1m labels: severity: critical service: security annotations: summary: "Actividad sospechosa detectada" description: "{{ $value }} requests sospechosos por segundo desde IP {{ $labels.ip }}" - name: business_alerts rules: # Pocos registros de usuarios - alert: LowUserRegistrations expr: rate(user_registrations_total[1h]) < 0.01 for: 30m labels: severity: info service: business annotations: summary: "Pocos registros de usuarios" description: "Solo {{ $value }} registros por hora en la última hora" # Muchas cancelaciones de suscripción - alert: HighSubscriptionCancellations expr: rate(subscription_cancellations_total[1h]) > 0.1 for: 15m labels: severity: warning service: business annotations: summary: "Muchas cancelaciones de suscripción" description: "{{ $value }} cancelaciones por hora"