Saltar a contenido

SAFE-POINT-038 - Entrega email de alertas La Directa

Fecha: 2026-06-15

Objetivo

Configurar la ruta segura para que las alertas de La Directa puedan entregar email real desde Alertmanager via SMTP, sin guardar secretos en Git y sin exponer Alertmanager publicamente.

SAFE POINT inicial

  • Workspace: C:\APV\openclawai
  • Estado inicial: ## main...origin/main
  • HEAD inicial: 703320e9ad4296f528bdef9110177dd08845a54c

Alcance

  • infra/observability/alertmanager/entrypoint.sh
  • infra/observability/docker-compose.yml
  • infra/observability/.env.example
  • Documentacion O4 y governance relacionada.

No se toco VPS WooCommerce, DNS, firewall ni exposicion publica de Alertmanager.

Auditoria previa

  • alertmanager.yml versionado mantiene fallback local-null.
  • entrypoint.sh ya leia el password SMTP desde /run/secrets/alertmanager_smtp_password.
  • docker-compose.yml montaba el secreto desde /opt/stacks/observability/secrets/alertmanager_smtp_password.
  • Hallazgo corregido: las variables SMTP no secretas estaban en .env.example, pero no se inyectaban al contenedor alertmanager.
  • Receiver runtime anterior: email-default, de alcance general.

Receiver configurado

  • Nombre: ladirecta-email
  • Destino: gabrielcanuti@gmail.com
  • Matchers:
  • tenant="ladirecta"
  • service="ecommerce-ladirecta"
  • severity=~"critical|warning"
  • group_by:
  • tenant
  • service
  • alertname
  • severity
  • group_wait: 1m
  • group_interval: 10m
  • repeat_interval: 4h
  • send_resolved: true

La ruta raiz y las rutas no configuradas quedan en local-null.

Alertas cubiertas

  • EcommerceLaDirectaComArDown
  • EcommerceLaDirectaArDown
  • EcommerceLaDirectaHighLatency
  • EcommerceLaDirectaSslExpiryWarning
  • EcommerceLaDirectaSslExpiryCritical

Secretos y variables requeridas

No se imprimieron ni se guardaron secretos.

Secreto requerido fuera de Git:

  • /opt/stacks/observability/secrets/alertmanager_smtp_password

Variables no secretas requeridas en /opt/stacks/observability/.env:

  • ALERTMANAGER_SMTP_SMARTHOST
  • ALERTMANAGER_SMTP_FROM
  • ALERTMANAGER_SMTP_AUTH_USERNAME
  • ALERTMANAGER_SMTP_REQUIRE_TLS
  • ALERTMANAGER_LADIRECTA_EMAIL_TO
  • ALERTMANAGER_SMTP_PASSWORD_FILE

Ejemplo versionado sin secretos:

  • infra/observability/.env.example

Estado de entrega real

Preparado en Git, pendiente de activacion runtime.

La entrega real queda pendiente hasta que existan credenciales SMTP validas en el VPS OpenClaw y el usuario confirme ejecutar deploy y drill controlado. Sin SMTP completo o sin password no vacio, Alertmanager arranca con el fallback versionado local-null.

Procedimiento de activacion pendiente

  1. Cargar el password SMTP en /opt/stacks/observability/secrets/alertmanager_smtp_password con permisos 600.
  2. Completar /opt/stacks/observability/.env con variables no secretas.
  3. Ejecutar docker compose config en /opt/stacks/observability.
  4. Reiniciar solo Alertmanager: docker compose up -d alertmanager
  5. Validar readiness interna: docker exec obs-alertmanager wget -qO- http://127.0.0.1:9093/-/ready
  6. Validar status sin imprimir config completa ni secretos.
  7. Ejecutar drill controlado solo con confirmacion humana.
  8. Confirmar recepcion de disparo y resolucion.

Validaciones SAFE-POINT-038

Validacion Resultado
git status -sb inicial PASS ## main...origin/main
git rev-parse HEAD inicial PASS 703320e9ad4296f528bdef9110177dd08845a54c
Alertmanager fallback PASS local-null preservado
Ruta La Directa SMTP PASS ladirecta-email preparado
Secretos en Git PASS sin password/token versionado
YAML local PASS docker-compose.yml, Alertmanager, Prometheus y reglas parsean
docker compose config local SKIP docker no disponible en PATH local
promtool local SKIP no disponible en PATH local
amtool local SKIP no disponible en PATH local
docker compose config OpenClaw PASS sobre runtime actual en /opt/stacks/observability
amtool check-config config generada SAFE-POINT-038 PASS con credenciales dummy no secretas en /tmp
promtool check config OpenClaw PASS en obs-prometheus
promtool check rules OpenClaw PASS en obs-prometheus
amtool check-config OpenClaw PASS config actual fallback local-null
Alertmanager health interno PASS docker exec obs-alertmanager ... /-/ready -> OK
Alertmanager no publico PASS 46.202.151.32:9093 sin conexion publica por timeout
Prometheus no publico PASS 46.202.151.32:9090 sin conexion publica por timeout
Secreto SMTP runtime PENDING smtp-secret-missing-or-empty
Test real email SKIP pendiente de SMTP real y confirmacion humana

Restricciones respetadas

  • No se toco VPS WooCommerce.
  • No se toco DNS.
  • No se toco firewall.
  • No se expuso Alertmanager publicamente.
  • No se guardaron secretos en Git.
  • No se imprimio password/token SMTP.
  • No se enviaron alertas reales a terceros.

Proximos pasos

  1. Cargar credenciales SMTP reales fuera de Git.
  2. Confirmar deploy de Alertmanager en OpenClaw.
  3. Ejecutar drill controlado de alerta La Directa.
  4. Documentar evidencia de recepcion y resolucion.