Observabilidad
No puedes arreglar lo que no puedes ver. La observabilidad se diseña desde el inicio, no se añade después de un incidente. Si una pregunta sobre producción necesita un cambio de código para ser respondida, la instrumentación está mal.
Reglas
- Tres pilares: logs, métricas, trazas. Cada uno responde una pregunta diferente: qué pasó (logs), cuánto y con qué frecuencia (métricas), por qué fue lento (trazas). Necesitas los tres.
- Solo logs estructurados. JSON (o similar). Usar grep no es una estrategia a escala.
- ID de correlación / trace en cada línea de log. Propágalo a través de cabeceras entre límites de servicio. Un solo ID une todo el recorrido de una solicitud.
- Métricas RED en cada endpoint. Tasa, Errores, Duración (con P50/P95/P99). Lo mínimo necesario para detectar regresiones.
- Métricas USE en cada recurso. Utilización, Saturación, Errores — para CPU, memoria, pools, colas, disco, red.
- Traza cada llamada entre servicios. Usa OpenTelemetry. Captura consultas a BD y aciertos de caché también como spans.
- Alerta sobre SLOs, no sobre métricas brutas. "CPU > 80%" despierta humanos a las 3am para nada. "Latencia P99 supera el SLO durante 5 min" captura dolor real de usuario.
- Health y readiness son endpoints diferentes.
/health= "Estoy vivo, no me reinicies."/ready= "Puedo recibir tráfico ahora mismo." Trátalos como tal. - Registra al nivel correcto, una vez por evento.
INFOpara ciclo de vida de solicitudes,WARNpara problemas recuperables,ERRORpara cosas que necesitan un humano. Los logs duplicados hacen que los paneles mientan. - Nunca registres PII o secretos. Enmascara en el appender; no confíes en que los llamadores lo recuerden.
- Cada alerta apunta a un runbook. Una alerta sin una acción documentada es una notificación de Slack que se hace pasar por una página.
Banderas rojas
- Depurar producción mediante SSH a un pod.
- Alertas que se activan rutinariamente y son ignoradas. (La fatiga de alertas es un problema de confiabilidad.)
- Logs que dicen
"error ocurrió"sin contexto, sin ID, sin stack. - Métricas que muestran solo promedios, sin percentiles.
- Un panel por servicio, cero paneles por recorrido de usuario.