Saltar al contenido
Blog
#observability#django#opentelemetry

Observabilidad real en Django con OpenTelemetry

9 min de lectura

Tres señales, un contexto

Logs, métricas y trazas solo son útiles si comparten contexto. El pegamento es la propagación: X-Request-ID (o traceparent en W3C Trace Context) debe viajar del edge al worker.

Logs estructurados con request_id

logger.info(
    "request.completed",
    extra={"request_id": rid, "status": 200, "latency_ms": 42.3},
)

Un middleware toma el header, lo deja en un ContextVar y el formatter JSON lo añade a cada línea. Con eso, grep request_id reconstruye el viaje completo de una petición entre servicios.

Métricas RED primero

Antes de dashboards exóticos: Rate, Errors, Duration por endpoint. Con esas tres series y alertas sobre error rate y p99 se cubre el 80% de los incidentes.

Trazas donde duele

Instrumentar todo desde el día uno es ruido. Empiezo por los bordes (HTTP, colas, DB) y profundizo solo en los spans que aparecen en incidentes. En un equipo real esto bajó el MTTR de horas a minutos: la traza señala el servicio culpable antes de abrir un solo log.

Cierre

La observabilidad no es una herramienta que se instala, es una propiedad que se diseña: contexto propagado, señales correlacionadas y hábito de mirar los datos antes de opinar.