Sistemas Distribuidos · Ingeniería de Datos

Observabilidad en sistemas distribuidos

Diferenciar logs, métricas y trazas y usar su correlación para diagnosticar fallos en sistemas distribuidos.

Observabilidad en sistemas distribuidos

Deberías poder preguntar lo que no previste Cuando una petición atraviesa veinte servicios, un error ya no vive en un solo archivo de log. El monitoreo responde las preguntas que ya sabías hacer; la observabilidad te deja responder las que no.

Un sistema distribuido falla de formas que no se ven en una sola máquina. La observabilidad es la capacidad de inferir el estado interno del sistema a partir de lo que emite hacia afuera, sin tener que instrumentar cada caso por adelantado.

Las tres señales

Trazas distribuidas

Una traza es el camino de una petición end-to-end; se descompone en spans, cada uno una unidad de trabajo en un servicio. Un identificador de traza se propaga entre servicios para poder reconstruir el recorrido y ver dónde se acumula la latencia.

Diagrama de tres bandas: arriba las tres señales (logs, métricas, trazas); en el centro la recolección con OpenTelemetry, agentes y sampling; abajo el análisis con dashboards, alertas y exploración, correlacionadas por un identificador de traza.
Las tres señales se recogen de forma unificada y se correlacionan para navegar de una alerta a la causa.

Métricas: RED y USE

Logs estructurados y correlación

Un log con campos y el mismo identificador de traza permite saltar de un pico en un dashboard a la traza lenta y de ahí al log exacto. Sin correlación, el ingeniero busca a mano y pierde el hilo.

OpenTelemetry y sampling

OpenTelemetry es el estándar abierto para instrumentar y exportar las tres señales. Como trazar todo cuesta, se usa muestreo: head sampling (decidir al inicio) o tail sampling (conservar siempre los errores y las trazas lentas).

Complementarias: la métrica dispara la alerta, la traza señala el servicio, el log explica la causa.
SeñalQué esSirve paraCosto
Métricasnúmeros agregadosalertar y ver tendenciasbajo
Logseventos con detalleentender qué pasómedio
Trazasrecorrido por serviciolocalizar cuellos de botellaalto

Alertar sobre síntomas, diagnosticar con todo

Una alerta debe encenderse por un síntoma que le duele al usuario (latencia o error rate alto), no por cada causa posible. El panel y las trazas sirven para diagnosticar una vez que la alerta sonó.

Errores frecuentes

Ejemplo resuelto: una compra tardó 8 segundos

  1. La alerta de latencia (un SLI) dispara.
  2. Abrir una traza muestreada lenta para ver en qué span se fue el tiempo.
  3. Identificar el servicio culpable (una llamada a inventario).
  4. Correlacionar con logs de ese servicio filtrando por el id de traza.
  5. Crear una métrica y una alerta para detectar el patrón antes que el usuario.

¿Para qué sirve en la realidad?

Sin observabilidad, un incidente en un sistema distribuido es un cuarto oscuro. Con ella, el recorrido de pregunta-resuesta se acorta: ver el síntoma, aislar el servicio y entender la causa antes de que escale.

¿Qué diferencia la observabilidad del monitoreo clásico?

En una traza distribuida, un span representa una unidad de trabajo dentro de un servicio.

El estándar abierto para instrumentar y exportar logs, métricas y trazas se llama .

Clasifica cada pregunta según la señal que mejor la responde.

Métrica
Traza
Log

Une cada término con su definición.

Observabilidad

Las tres señales
logs, métricas, trazas
Recorrido de una petición entre servicios
traza distribuida
Pieza de trabajo de un servicio en una traza
span
Métricas de servicio: rate, errors, duration
RED
Conservar siempre errores y trazas lentas
tail sampling

Observabilidad distribuida: logs, métricas y trazas

# Observabilidad
## Senales
### logs
### metricas RED y USE
### trazas y spans
## Recolectar
### OpenTelemetry
### head y tail sampling
## Usar
### alertar sintomas
### diagnosticar con trazas y logs
### correlacionar por id

OpenTelemetry (documentación oficial)
Referencia del estándar para instrumentar trazas, métricas y logs.

Monitoreo de sistemas distribuidos (Google SRE Book)
Cómo pensar señales, SLI y alertas basadas en síntomas.

Tu servicio de checkout tiene latencia intermitente que solo aparece bajo carga y ningún tablero la muestra. ¿Qué traza de señal implementarías primero (logs, métricas o trazas) y cómo la correlacionarías para encontrar el cuello de botella?