Saltar a contenido

O3.1 Alert Drill Report

Corrida formal del drill controlado de alertas O3 ejecutada el 2026-06-01.

Fecha y hora

  • inicio local: 2026-06-01 12:03:58 -03
  • cierre local: 2026-06-01 12:41:25 -03
  • host remoto validado: srv977009

Safe point

  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> a82ea0c1c34b94e889a89650d389e937e3112e4a

Objetivo

Demostrar que O3 funciona de extremo a extremo con Prometheus y Alertmanager sin abrir puertos, sin tocar OpenClaw, sin tocar NPM, sin tocar Portainer y sin habilitar notificaciones externas.

Preestado

  • Alertmanager en receiver local-null
  • agrupacion activa por alert_group y severity
  • targets base UP
  • alertas activas reales: 0
  • alerta informativa permanente: Watchdog en local-null
  • OpenClaw, NPM, Portainer, Grafana y Alertmanager sanos antes de iniciar

Pruebas ejecutadas

Drill 1 - Node Exporter Down

  • inicio: 2026-06-01 12:04:01 -03
  • accion: stop/start temporal solo de obs-node-exporter
  • alerta esperada: NodeExporterNoData
  • alertas observadas: NodeExporterNoData
  • evidencia Prometheus: pending desde 2026-06-01 12:04:38 -03, firing a 2026-06-01 12:10:05 -03
  • evidencia Alertmanager: alerta activa recibida en local-null a 2026-06-01 12:10:05 -03
  • recuperacion: obs-node-exporter levantado a 2026-06-01 12:10:09 -03, alerta resuelta a 2026-06-01 12:11:16 -03
  • tiempo aproximado de disparo: 6m 04s
  • tiempo aproximado de resolucion: 1m 07s desde la recuperacion

Drill 2 - cAdvisor Down

  • inicio: 2026-06-01 12:27:18 -03
  • accion: stop/start temporal solo de obs-cadvisor
  • alerta esperada: CadvisorNoData
  • alertas observadas en corrida final: CadvisorNoData
  • evidencia Prometheus: pending desde 2026-06-01 12:27:38 -03, firing a 2026-06-01 12:32:49 -03
  • evidencia Alertmanager: alerta activa recibida en local-null a 2026-06-01 12:32:49 -03
  • recuperacion: obs-cadvisor levantado a 2026-06-01 12:32:52 -03, alerta resuelta a 2026-06-01 12:33:58 -03
  • tiempo aproximado de disparo: 5m 31s
  • tiempo aproximado de resolucion: 1m 06s desde la recuperacion

Drill 3 - Blackbox Failure controlado

  • inicio: 2026-06-01 12:34:41 -03
  • accion: alta temporal de target sintetico http://127.0.0.1:65534/ en blackbox-http-targets.json
  • alerta esperada: BlackboxProbeFailed
  • alertas observadas: BlackboxProbeFailed
  • evidencia Prometheus: pending desde 2026-06-01 12:35:13 -03, firing a 2026-06-01 12:40:12 -03
  • evidencia Alertmanager: alerta activa recibida en local-null a 2026-06-01 12:40:12 -03
  • recuperacion: target temporal retirado a 2026-06-01 12:40:16 -03, alerta resuelta a 2026-06-01 12:41:21 -03
  • tiempo aproximado de disparo: 5m 31s
  • tiempo aproximado de resolucion: 1m 05s desde la reversa

Drill 4 - Pipeline Alertmanager

  • receiver confirmado: local-null
  • agrupacion confirmada: alert_group, severity
  • integraciones externas activas: ninguna
  • evidencia: api/v2/status muestra solo receiver local-null y sin email_configs, slack_configs, webhook_configs ni otros receivers operativos

Hallazgo intermedio y correccion

  • en la primera corrida de obs-cadvisor, ademas de CadvisorNoData aparecio el falso critical DockerTrackedContainerDown
  • causa: la regla inferia caida de contenedores clave a partir de container_last_seen aun cuando cAdvisor era justamente la fuente caida
  • correccion aplicada: DockerTrackedContainerDown ahora solo evalua si up{job="cadvisor"} == 1
  • archivo ajustado: infra/observability/prometheus/rules/docker-alerts.yml
  • revalidacion: corrida final de obs-cadvisor completada sin ese falso critical

Evidencia Prometheus

  • precheck: tmp/o31-alert-drill-20260601-120313/00-precheck.txt
  • drill 1: tmp/o31-alert-drill-20260601-120313/01-node-exporter-drill.log
  • drill 2 final: tmp/o31-alert-drill-20260601-120313/02-cadvisor-drill-final.log
  • recarga y verificacion de regla: tmp/o31-alert-drill-20260601-120313/02b-docker-rule-reload.txt, tmp/o31-alert-drill-20260601-120313/02c-docker-rule-verify-reload.txt, tmp/o31-alert-drill-20260601-120313/02d-prometheus-hup.txt
  • drill 3: tmp/o31-alert-drill-20260601-120313/03-blackbox-drill.log
  • postcheck: tmp/o31-alert-drill-20260601-120313/99-postcheck.txt

Evidencia Alertmanager

  • api/v2/status y api/v2/alerts en precheck y postcheck quedan archivados en 00-precheck.txt y 99-postcheck.txt
  • las tres alertas de la corrida final llegaron a local-null
  • no se observaron receivers externos ni rutas alternativas activas

Servicios tocados temporalmente

  • obs-node-exporter
  • obs-cadvisor
  • archivo runtime /opt/stacks/observability/prometheus/targets/blackbox-http-targets.json
  • recarga controlada de reglas en obs-prometheus

Servicios no tocados

  • openclaw-openclaw-gateway-1
  • nginx-proxy-manager
  • portainer
  • obs-grafana
  • obs-alertmanager
  • obs-blackbox-exporter
  • obs-thanos-query
  • obs-thanos-sidecar
  • obs-thanos-storegateway
  • obs-thanos-compactor

Estado final

  • targets Prometheus: todos UP
  • alertas activas reales: 0
  • alerta informativa residual: solo Watchdog
  • OpenClaw: VERDE
  • NPM: VERDE
  • Portainer: VERDE
  • Grafana: VERDE
  • Alertmanager: VERDE
  • notificaciones externas habilitadas: no
  • puertos publicos nuevos: no

Riesgos residuales

  • Watchdog sigue activo por diseno; no cuenta como alerta real
  • el drill confirma O3 local, pero la validacion de notificacion externa sigue pendiente hasta que se apruebe un canal real
  • el target sintetico temporal fue reversible y quedo retirado, pero cualquier cambio futuro en targets/ o reglas O3 debe revalidarse con esta misma secuencia

Resultado final

  • pruebas ejecutadas: 4
  • alertas esperadas observadas: NodeExporterNoData, CadvisorNoData, BlackboxProbeFailed
  • alertas observadas no deseadas en corrida final: 0
  • decision final: VERDE

Checklist de cierre

  • SAFE POINT inicial: OK
  • HEAD inicial: a82ea0c1c34b94e889a89650d389e937e3112e4a
  • drills ejecutados: OK
  • alertas disparadas: OK
  • alertas resueltas: OK
  • evidencia Prometheus: OK
  • evidencia Alertmanager: OK
  • servicios tocados temporalmente: OK
  • servicios no tocados: OK
  • estado final targets Prometheus: OK
  • estado final alertas activas: OK
  • estado OpenClaw: OK
  • estado NPM: OK
  • estado Portainer: OK
  • estado Grafana: OK
  • estado Alertmanager: OK
  • notificaciones externas habilitadas: NO
  • puertos publicos nuevos: NO
  • documentacion actualizada: pendiente de commit
  • riesgos residuales: documentados
  • commit SHA: pendiente
  • push exitoso: pendiente
  • repo limpio: pendiente
  • semaforo final completo: VERDE