Lo que cambia
PROD podrá avisar por email al equipo infra cuando la app se degrade por dentro. Hasta ahora la única alarma era UptimeRobot, que solo mira: “¿responde la web?” desde fuera.
Una app lenta o devolviendo errores 500 pero que sigue contestando a /health no disparaba nada. Ahora sí:
- Caída (
up == 0) — PROD no responde. - Lentitud (
p95_latency > 2s) — 95% de requests tardan más de 2s. - Tasa alta de errores 5xx — más de 50 en 1m.
- Errores de DB — intentos fallidos contra Postgres.
- Memoria sostenida alta (>3GB, 15m) — posible leak.
Cada alarma llega a logcrearack@esfericlabs.com con:
- Nombre de la alerta (
CreaRackDown,HighLatency, etc.). - Descripción legible del problema.
- Timestamp.
- Link a VictoriaMetrics (si está disponible).
Por qué
Primer hito del Plan Hardening post-Máster (detectado en la sesión de auditoría).
El Máster destapó que la observabilidad de PROD era un punto ciego:
- Las 5 reglas de alerta existían, pero ningún componente las ejecutaba.
- Encima dependían de métricas que en PROD ni se recogían (solo push de targets clientes, no salud app).
- La única vigilancia real era externa (UptimeRobot sobre
/health).
Esto genera un riesgo grave: degradaciones internas sin notificación, impactando a clientes sin que el equipo lo sepa hasta que lo reportan.
Cómo se activa
3 piezas nuevas en la stack:
1. Scrape de /metrics en PROD
La VM de VictoriaMetrics ahora pull de http://web:8000/metrics cada 15s. Sin esto, no hay métricas de salud (CPU, memoria, latencia, errores Django).
2. vmalert (evaluador)
Ejecuta las 5 reglas en observability/victoriametrics/alerts.yml cada 30s contra las métricas. Cuando una condición se cumple (ej. up == 0), la dispara.
3. Alertmanager (notificador)
Recibe las alertas de vmalert. Las agrupa (para no spam si hay múltiples), aplica un delay de 30s (para evitar falsos positivos), y envía email a logcrearack@esfericlabs.com vía Resend SMTP (smtp.resend.com:587, STARTTLS, auth PLAIN).
- Remitente:
CreaRack Pro <noreply@crearack.com>(dominio verificado en Resend). - Asunto:
[CreaRack PROD] ACTIVE · CreaRackDown(ejemplo). - Reintentos: si una alerta sigue activa, reenvía cada 4h (para no abrumar).
Impacto al usuario
Ninguno en el producto — es vigilancia interna. El usuario no ve/hace nada diferente.
Impacto operacional (para el equipo):
- Tiempo de detección de degradaciones → de “reportado por cliente” a “segundos”.
- Debugging más rápido con alerta que con dump post-facto.
Despliegue en STAGE/PROD
Pendiente: montar la API key de Resend en Dokploy.
- Crear fichero
files/smtp_passworden cada Dokploy (STAGE y PROD) con la clave en una línea. - Montar como volumen en alertmanager (
/etc/alertmanager/smtp_password). - Confirmar dominio verificado + destinatario válido.
Una vez hecho, el stack arranca y cualquier alerta sale por email al instante.
Configuración local (dev)
En compose.observability.yml, vmalert y alertmanager también están activos. Para testear:
# Simular caída: detener el web
docker compose down web
# Pocos segundos después, vmalert dispara CreaRackDown
# Alertmanager lo recibe (visible en http://localhost:9093)
# No enviará email (no hay key Resend), pero logs muestran la conexión SMTP
Reglas de alerta
Definidas en observability/victoriametrics/alerts.yml:
| Alerta | Condición | Severidad | Descripción |
|---|---|---|---|
CreaRackDown | up == 0 | critical | PROD no responde. |
HighLatency | histogram_quantile(0.95, ...) > 2 | warning | P95 latencia > 2s. |
HighErrorRate | rate(django_http_requests_total{status=~"5.."}[1m]) > 50 | warning | Más de 50 errores 5xx/min. |
DatabaseErrors | rate(django_db_errors_total[1m]) > 0 | warning | Errores contra DB. |
HighMemoryUsage | process_resident_memory_bytes / 1024 / 1024 > 3072 (15m) | warning | Memoria > 3GB por 15 min. |
Cambio en este PR: umbral HighMemoryUsage 1GB → 3GB (PROD es 16GB, Daphne bajo carga legitimamente usa >1GB).
Véase también
- [[decision—20260529—plan-hardening-post-master-hito-a]]
- [[entity—observability—service—vmalert]]
- [[entity—observability—service—alertmanager]]
- [[concept—saas—observability]]
- [[runbook—observability—alerting-setup]]
Referenciado desde
- Decisión: Plan Hardening post-Máster — Hito A (Alerting de PROD)
- Entidad: Alertmanager — enrutador y notificador de alertas por email
- Entidad: vmalert — evaluador de reglas de alerta en tiempo real
- Falsas alarmas HighErrorRate por el 501 deliberado de SpinetiX WebDAV
- Feature: Avisos del requisito 24/7 del Sentinel
- Incidente: needrestart colgó un job de CI 45 min sin fallar, y crearack-ops-1 llevaba 4 días caído sin aviso
- Las alarmas de CreaRack (avisos cuando algo va mal)
- Runbook: Setup de Alerting en Dokploy (STAGE y PROD)
- Sistema de alarmas de PROD (vmalert + Alertmanager)