El tracing distribuido muestra dónde falló una petición y por qué, servicio por servicio. Cuando la petición cruza seis servicios y cada uno loggea su pedazo, correlacionar entradas por timestamp se vuelve adivinanza bajo carga. Los trace IDs cosen el recorrido completo.

Spans y contexto W3C

Los traces contienen spans: operaciones nombradas con duración, atributos y status. Las relaciones padre-hijo forman el árbol de ejecución. El W3C Trace Context propaga contexto via header traceparent a través de HTTP, gRPC y colas de mensajes. Sigue esa spec desde el primer día.

Configuración del SDK

Arma un TracerProvider con exportador OTLP apuntando al collector o al endpoint del vendor. El BatchSpanProcessor da throughput adecuado para producción, en contraste con el SimpleSpanProcessor de pruebas. Los resource attributes declaran service name, versión y ambiente: la telemetría sin identificación de origen se vuelve ruido.

Instrumentación: auto o manual

Empieza por los agents de zero-code para Node, Python y Java: cubren frameworks populares y clients HTTP sin tocar el código. La documentación de OpenTelemetry lista los agents disponibles por lenguaje. Restringe los spans manuales a las operaciones críticas de negocio, con nombres estables y atributos de dominio (id del pedido, plan del cliente). Un nombre demasiado genérico estorba la búsqueda en el vendor.

Sampling: head o tail

Head sampling entre 10% y 100% según el tráfico decide qué recolectar en el origen. El tail sampling mantiene todos los traces con error y los outliers lentos, descartando éxitos rutinarios; la decisión pertenece al collector en ese modo. Sin tail sampling, el trace raro del bug difícil se escapa.

Despliegue del collector

El patrón agent sidecar más gateway equilibra overhead local con procesamiento central. Los processors se encargan del batching, la filtración y la remoción de PII antes del export. Hacer scrubbing en el collector evita fugas de dato sensible hacia vendors terceros.

Vendor

Jaeger sirve para empezar self-hosted; Grafana Tempo apuesta a object storage para abaratar la retención larga; Datadog y Honeycomb entregan análisis administrado. OTLP mantiene el cambio barato: migrar de backend significa cambiar el exporter, no instrumentar de nuevo.

Trampas

  • Propagación perdida en fronteras async y thread pools; el trace se rompe a mitad de camino
  • Span explosion con un span por línea de base de datos; agrega por query, no por row
  • Clock skew entre hosts confundiendo la visualización en waterfall