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

¿Qué conceptos sostienen OpenTelemetry?

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.

¿Cómo configurar el 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. En los resource attributes declara service name, versión y ambiente; telemetría sin identificación de origen se vuelve ruido.

¿Auto-instrumentación o spans manuales?

Empieza por los agents de zero-code para Node, Python y Java: cubren frameworks populares y clients HTTP sin tocar el código. 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.

¿Qué estrategia de sampling usar?

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.

¿Cómo se despliega el 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.

¿Qué vendor elegir?

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 de alta calidad. OTLP mantiene el cambio barato: migrar de backend significa cambiar el exporter, no instrumentar de nuevo.

¿Qué trampas tumban proyectos de tracing?

  • 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