Saltar a contenido

Apéndice D — Monitoreo y alertas

D.1. Stack mínimo recomendado

Componente Propósito Endpoint
Prometheus node_exporter CPU, RAM, disco, red :9100/metrics
postgres_exporter Queries lentas, conexiones :9187/metrics
redis_exporter Memoria, latencia, queue :9121/metrics
nginx_exporter RPS, latencia, 5xx :9113/metrics
django-prometheus Vistas Django, ORM time /metrics
Grafana Visualización :3000
Alertmanager Alertas → Slack/email :9093

D.2. Alertas críticas

groups:
- name: ecf_dgii
  rules:
  - alert: ECF_QUEUE_BACKLOG
    expr: ecf_estado_en_cola_count > 20
    for: 10m
  - alert: ECF_RECHAZOS_ANOMALOS
    expr: rate(ecf_rechazado_total[15m]) > 0.1
    for: 5m
  - alert: DGII_DOWN
    expr: probe_success{job="dgii_health"} == 0
    for: 3m
  - alert: CERT_EXPIRY_SOON
    expr: cert_p12_days_remaining < 30
  - alert: SECUENCIA_BAJA
    expr: ecf_secuencia_restante < 500
  - alert: DISK_SPACE_LOW
    expr: node_filesystem_avail_bytes / node_filesystem_size_bytes < 0.1

D.3. Healthcheck endpoint propio

tienda/health.py:

def healthz(request):
    checks = {
        "db": check_db(),
        "redis": check_redis(),
        "celery": check_celery_workers(),
        "cert_days_left": cert_days_remaining(),
    }
    status = 200 if all(checks.values()) else 503
    return JsonResponse(checks, status=status)

Configurar uptime monitor externo (Uptime Kuma, BetterStack, Pingdom) que apunte a /healthz/ cada 1 min y /healthz/dgii/ cada 5 min.

D.4. Logs centralizados

Opciones: Loki + Promtail (simple), ELK (pesado), Papertrail/Datadog/Logtail (SaaS). Auditoría DGII exige retener logs al menos 10 años.