1. Introducción a Jaeger

Por: Artiko
jaegertracingintroduccioncncf

1. Introducción a Jaeger

El problema que resuelve

Imaginá una request que entra a tu API, pasa por un servicio de autenticación, hace tres llamadas a otros microservicios, dos consultas a la base de datos y una llamada a un servicio externo. La request tarda 2.3 segundos.

¿Dónde se fue el tiempo?

flowchart LR
    R[Request] --> A[API Gateway\n40ms]
    A --> B[Auth Service\n80ms]
    B --> C[Order Service\n1.8s]
    C --> D[(Postgres)]
    D --> E[Payment Service\n200ms]
    E --> F[Stripe API]
    style C fill:#fee2e2,stroke:#991b1b

En un timeline de Jaeger ese rectángulo rojo de 1.8s en Order Service salta solo. En logs lo encontrás si tenés suerte.


¿Qué es Jaeger?

Jaeger es una plataforma open source para distributed tracing: capturar, almacenar y visualizar trazas que recorren múltiples servicios.

Sus capacidades principales:


Historia rápida

AñoHito
2015Uber empieza Jaeger inspirado en Dapper de Google
2017Open source bajo licencia Apache 2.0
2017Aceptado como proyecto CNCF (Cloud Native Computing Foundation)
2019Graduado de la CNCF — máximo nivel de madurez
2022SDKs propios deprecados a favor de OpenTelemetry
2024Lanzamiento de Jaeger v2 basado en OpenTelemetry Collector

El paso clave es 2022: Jaeger dejó de tener SDKs propios. Hoy se instrumenta con OpenTelemetry y Jaeger es solo el backend.


Casos de uso

Diagnóstico de latencia

El uso más común. Tu p99 subió de 200ms a 2s. Buscás un trace lento en la UI, abrís el timeline y ves dónde se va el tiempo.

Debugging de errores

Una request falla con 500. El trace te muestra qué span tiró la excepción, con stack trace, atributos del request y contexto previo.

Análisis de dependencias

¿Qué servicios llaman al servicio de pricing? Jaeger genera el grafo automáticamente leyendo las trazas.

Auditoría de flujos

¿Realmente la request pasa por todos los servicios que creés que pasa? Las trazas te muestran lo que realmente sucede.

Capacity planning

¿Qué porcentaje del tiempo de una request lo consume Postgres vs Redis vs lógica de aplicación? Las trazas agregadas dan la respuesta.


Comparación con alternativas

HerramientaOrigenStorage típicoNotas
JaegerUber / CNCFCassandra, ES, ClickHouseMaduro, UI excelente, SPM nativo
ZipkinTwitterMySQL, Cassandra, ESMás viejo, menos features modernas
Grafana TempoGrafana LabsObject storage (S3, GCS)Optimizado para costo a gran escala
AWS X-RayAmazonAWS managedSolo AWS, vendor lock-in
Datadog APMDatadogSaaSComercial, integrado con su stack
HoneycombHoneycombSaaSComercial, foco en exploración

Cuándo elegir Jaeger:

Cuándo no:


El cambio mental que requiere

Adoptar tracing no es solo “instalar Jaeger”. Implica cambiar cómo pensás los problemas de producción:

flowchart LR
    A[Sintoma:\nlatencia alta] --> B[Buscar trace\nrepresentativo]
    B --> C[Leer timeline]
    C --> D[Identificar span\nculpable]
    D --> E[Mirar atributos\ny logs del span]
    E --> F[Hipótesis\nde causa raíz]

En lugar de:

Pasa a ser:

El reflejo del trace-first hay que entrenarlo. Es lo que hace que Jaeger valga la pena: si tu equipo sigue empezando por logs ante cada incidente, no estás capitalizando la inversión.


Lo que viene en este tutorial

En el próximo capítulo cubrimos los conceptos: qué es exactamente un trace, qué es un span, cómo se relacionan jerárquicamente, y qué información lleva cada uno. Es la base sin la cual el resto del tutorial no se entiende.