Skip to content

Observabilidad y operación

Salud

  • GET /healthz responde 200 ok (texto plano) desde nginx (nginx.conf:14-17). Es el sondeo de salud disponible para Cloud Run o monitorización externa.

Logs, métricas y trazas

  • Sin instrumentación propia: no hay logger de aplicación, métricas ni trazas en el repo (es estático; Dockerfile:14-20).
  • Logs de plataforma: nginx escribe sus logs de acceso/error estándar, y Cloud Run los recoge en Cloud Logging. DESCONOCIDO: configuración explícita de logging/alerting en Cloud Run (no definida en el repo).
  • Sin analítica de tráfico: no hay Google Analytics ni similares (ver funcional/06-cumplimiento.md).

Resiliencia

  • Cloud Run escala de 0 a 2 instancias (.github/workflows/deploy.yml:49-50): arranque en frío posible desde cero, techo de 2 instancias.
  • gzip y caché de estáticos a 1 año reducen carga y latencia (nginx.conf:24-33).
  • No hay inyección de fallos ni pruebas de caos (N/A para un blog estático).

Operación: publicar (deploy MANUAL)

Recordatorio operativo crítico: el despliegue NO es automático. Ver tecnico/05-despliegue.md. Procedimiento manual del operador:

  1. npm run build y npm run preview para validar localmente (package.json:9-10).
  2. docker build de la imagen multistage (Dockerfile).
  3. docker push a Artifact Registry (:sha y :latest).
  4. gcloud run deploy personal-blog --region europe-west1 ... --port 8080 (parámetros en .github/workflows/deploy.yml:39-52).

Verificación tras desplegar

Conforme al principio de verificación del workspace (CLAUDE.md raíz §7), no basta con que el comando no dé error. Comprobar:

  • Estado del servicio: gcloud run services describe personal-blog --region europe-west1 --project homelab-466309 (revisar la revisión activa y READY).
  • Salud en vivo: GET https://www.navarro-bores.com/healthzok (nginx.conf:14-17).
  • Contenido actualizado: confirmar que la versión servida corresponde al main esperado (mitiga el desfase por deploy manual; tecnico/05-despliegue.md).

Runbook: recordatorio de expiración de dominio

  • scripts/domain-reminder.sh calcula días hasta EXPIRY_DATE y notifica por umbrales (expirado / ≤14 / ≤30 / ≤60 días) vía osascript (scripts/domain-reminder.sh:7-22); registra en /tmp/domain-reminder.log (:24).
  • Se instala como LaunchAgent de macOS (scripts/com.navarro-bores.domain-reminder.plist; scripts/domain-reminder.sh:4).
  • Acción de mantenimiento: tras renovar el dominio en eNom, actualizar EXPIRY_DATE (scripts/domain-reminder.sh:7, CLAUDE.md:34).

Cybersecurity · Technology · Leadership