svc-observability-o1
A. Identidad
service_id: svc-observability-o1
nombre: Observabilidad O1
estado: activo al 2026-06-01
owner: Gabi
criticidad: media-alta
fecha de alta: 2026-06-01
ultima revision: 2026-06-01
B. Proposito
resumen funcional:
stack privado de monitoreo base del VPS y de la disponibilidad publica de
OpenClaw.
rol dentro del VPS:
dar visibilidad de host, Docker, contenedores y probes HTTPS sin tocar
OpenClaw ni NPM.
por que existe:
habilita dashboards, targets y alertas minimas para operar con evidencia.
C. Ubicacion
path VPS: /opt/stacks/observability
path repo/docs:
infra/observability/ y docs/governance/services/svc-observability-o1.md
compose file: /opt/stacks/observability/docker-compose.yml
.env real: opcional; el despliegue actual funciona con defaults
archivos criticos:
/opt/stacks/observability/docker-compose.yml
/opt/stacks/observability/prometheus/prometheus.yml
/opt/stacks/observability/prometheus/rules/o1-base.yml
/opt/stacks/observability/alertmanager/alertmanager.yml
/opt/stacks/observability/blackbox/blackbox.yml
/opt/stacks/observability/grafana/provisioning/
/opt/stacks/observability/grafana/dashboards/
/opt/stacks/observability/secrets/grafana_admin_password
D. Docker
stack: observability
container names:
obs-prometheus
obs-grafana
obs-alertmanager
obs-node-exporter
obs-cadvisor
obs-blackbox-exporter
images/tags:
prom/prometheus:v3.12.0
grafana/grafana:13.0.1-security-01
quay.io/prometheus/alertmanager:v0.32.1
prom/node-exporter:v1.11.1
ghcr.io/google/cadvisor:v0.57.0
quay.io/prometheus/blackbox-exporter:v0.28.0
restart policy: unless-stopped en todos
networks:
obs-observability-internal
volumes:
obs_prometheus_data
obs_grafana_data
obs_alertmanager_data
bind mounts:
/opt/stacks/observability/*
host /, /proc, /sys, /var/run, /var/lib/docker, /dev/disk
solo donde hace falta para exporters
published ports:
127.0.0.1:3000 -> 3000/tcp solo para Grafana
internal ports:
9090/tcp Prometheus
3000/tcp Grafana
9093/tcp Alertmanager
9100/tcp Node Exporter
8080/tcp cAdvisor
9115/tcp Blackbox Exporter
E. Red
red Docker:
obs-observability-internal
exposicion publica:
ninguna
acceso humano permitido:
Grafana por 127.0.0.1:3000 en el VPS
tunel SSH ssh -L 3000:127.0.0.1:3000 openclaw-vps
quien puede hablar con quien:
Prometheus scrapea Alertmanager, Grafana, Node Exporter,
cAdvisor y Blackbox Exporter
Blackbox Exporter prueba OpenClaw, NPM local y Portainer local
Grafana consulta solo a Prometheus
F. Publicacion y acceso
NPM:
no participa en O1
dominio publico:
ninguno
Grafana:
solo localhost del VPS
credencial admin:
password local en
/opt/stacks/observability/secrets/grafana_admin_password
G. Datos y persistencia
datos criticos:
TSDB de Prometheus
base SQLite de Grafana
estado de Alertmanager
reglas, dashboards y provisioning
secreto admin de Grafana
volumenes:
obs_prometheus_data
obs_grafana_data
obs_alertmanager_data
que se puede regenerar:
contenedores
red obs-observability-internal
que NO se puede perder:
volumen obs_prometheus_data
volumen obs_grafana_data
directorio /opt/stacks/observability
H. Backups
proteccion actual por capa:
Git:
infra/observability/docker-compose.yml,
prometheus/prometheus.yml,
prometheus/rules/o1-base.yml,
alertmanager/alertmanager.yml,
blackbox/blackbox.yml,
grafana/provisioning/ y grafana/dashboards/
backup local VPS:
observability-stack.tgz,
obs-prometheus-volume.tgz,
obs-grafana-volume.tgz,
obs-alertmanager-volume.tgz
copia externa validada:
C:\APV\backups\openclaw\daily/<timestamp>\
con replica integra de la carpeta diaria y validacion por SHA256SUMS
rutas backup:
/root/openclaw-backups/daily/<timestamp>/observability-stack.tgz
/root/openclaw-backups/daily/<timestamp>/obs-prometheus-volume.tgz
/root/openclaw-backups/daily/<timestamp>/obs-grafana-volume.tgz
/root/openclaw-backups/daily/<timestamp>/obs-alertmanager-volume.tgz
frecuencia:
diario 03:00 junto al resto del VPS
restore probado:
backup extendido y runbook documentado al 2026-06-01;
falta simulacion de restore O1 desde copia externa en staging dedicada
RPO objetivo: 24 horas
RTO objetivo: 30-60 minutos
estrategia minima de copia externa:
minimo recuperable para O1:
observability-stack.tgz
minimo recuperable recomendado ante perdida total del VPS:
observability-stack.tgz +
obs-prometheus-volume.tgz +
obs-grafana-volume.tgz +
obs-alertmanager-volume.tgz +
SHA256SUMS +
manifest.txt
justificacion:
observability-stack.tgz ya incluye configuraciones O1,
dashboards Grafana, reglas Prometheus, Alertmanager, Blackbox y
secreto admin de Grafana; los obs-*.tgz preservan historia, SQLite y
estado operativo que Git no cubre
que NO se pierde con la estrategia recomendada:
compose, configs y dashboards versionados
secreto admin de Grafana si se conserva observability-stack.tgz
base SQLite de Grafana
TSDB local de Prometheus dentro de la ventana del ultimo backup
estado de silencios de Alertmanager dentro de la ventana del ultimo backup
que SI se puede perder:
metricas, dashboards editados en caliente o silencios creados despues del
ultimo backup diario
cualquier corrida local no exportada todavia fuera del VPS
dependencia para perdida total del VPS:
O1 es recuperable solo si existe al menos una copia externa reciente de la
corrida diaria; el backup que queda unicamente en /root/openclaw-backups
no alcanza ante perdida total del host
I. Targets iniciales
targets internos:
prometheus:9090
alertmanager:9093
grafana:3000
node-exporter:9100
cadvisor:8080
blackbox-exporter:9115
probes:
https://openclaw.alpuntodeventa.com.ar/
http://host.docker.internal:81/
https://host.docker.internal:9443/
J. Dependencias
depende de:
Docker del host
red obs-observability-internal
volumenes O1
servicios que dependen de este:
operacion diaria del VPS
impacto si cae:
se pierde visibilidad y alerta base, pero OpenClaw, NPM y Portainer siguen
funcionando
K. Operacion
como validar salud:
docker ps --filter name=obs-
docker exec obs-prometheus wget -qO- http://127.0.0.1:9090/api/v1/targets
curl -I http://127.0.0.1:3000/login
dashboards provisionados:
Executive Overview
Infrastructure Health
Docker Operations
Service Availability
Capacity Planning
folder Grafana:
O2 Dashboards
datasource operativo:
Prometheus con uid prometheus
catalogo operativo:
O2-DASHBOARDS-CATALOG.md
como reiniciar:
cd /opt/stacks/observability && docker compose up -d
como recuperar:
usar RESTORE-OBSERVABILITY-O1.md
L. Seguridad
secretos:
password de Grafana fuera de Git y guardada solo en el VPS
exposicion publica:
ninguna
hardening:
solo 127.0.0.1:3000 publicado
sin NPM
sin puertos publicos nuevos
riesgos:
cAdvisor requiere mounts sensibles del host
Prometheus puede crecer si se sube la retencion
M. Estado y decisiones
decisiones tomadas:
O1 queda privada
Grafana no se publica por NPM
Alertmanager queda operativo sin notificaciones externas
retencion inicial de Prometheus: 7d y 6GB
la proteccion externa minima de O1 se hereda de
bkp-openclaw-external-copy sin crear servicios nuevos
por que esta asi:
prioriza visibilidad real con bajo riesgo y bajo ruido operativo
Volver al principio