Introducción
En 2016, cuando los sistemas distribuidos migraron de arquitecturas monolíticas a microservicios, herramientas como Jaeger surgieron para resolver un problema concreto: ¿cómo seguir el rastro de una solicitud que cruza 15 servicios distintos en 3 regiones diferentes? La respuesta fue el distributed tracing, un estándar que hoy es pilar de la observabilidad en cloud. Pero en 2026, el problema ya no es solo rastrear microservicios, sino entender el flujo de ejecución de un agente de IA que orquestra herramientas externas, consulta vectores y toma decisiones en tiempo real. Jaeger, proyecto incubado en CNCF, está reescribiendo su núcleo para abordar este nuevo paradigma.
La migración a Jaeger v2 no es un cambio cosmético: es una reescritura que reemplaza su mecanismo de recolección original —basado en agentes específicos— por el OpenTelemetry Collector como columna vertebral del sistema. Esto no solo unifica la recolección de traces, métricas y logs en un solo binario, sino que permite integrar nativamente datos de aplicaciones de IA generativa. Según el blog de CNCF, esta transición se implementa en dos fases:
- Reemplazo del núcleo: Jaeger v2 adopta OpenTelemetry como formato nativo, eliminando pasos intermedios de traducción.
- Extensión de capacidades: Integración con protocolos abiertos (MCP, ACP, AG-UI) para que ingenieros y agentes de IA colaboren en el debugging.
Qué ocurrió
1. Jaeger v2: OpenTelemetry como columna vertebral
Hasta Jaeger 1.x, el sistema dependía de su propio agente (jaeger-agent) para recolectar datos y enviarlos al colector (jaeger-collector). Esto generaba fricciones:
- Doble parsing: Los datos llegaban en formato Jaeger y debían convertirse a OpenTelemetry (OTLP) para integrarse con otros sistemas.
- Falta de estandarización: Las convenciones para rastrear llamadas a modelos de IA (como los tokens de un LLM) no existían.
Jaeger v2 (lanzado en mayo de 2026) resuelve esto al adoptar el OpenTelemetry Collector como único componente de recolección. El cambio técnico clave es la eliminación del jaeger-agent y su reemplazo por un colector OTLP que:
- Ingiere datos directamente en OTLP (OpenTelemetry Protocol), sin conversiones intermedias.
- Unifica métricas, logs y trazas en un solo pipeline.
- Permite ejecutar el mismo binario tanto en desarrollo como en producción (gracias a que el colector OTLP es portable).
- Versión afectada: Jaeger v2.0.0 (lanzada el 20 de mayo de 2026).
- Componentes críticos:
otel-collector: Reemplaza a jaeger-collector y jaeger-agent.– jaeger-query: Ahora consume datos directamente desde OTLP.
- Rendimiento: Reducción del 30% en latencia de ingestión (según benchmarks internos del proyecto).
2. Nuevos protocolos para agentes de IA: MCP, ACP y AG-UI
El segundo cambio es conceptual: Jaeger ya no solo rastrea servicios, sino también agentes de IA. Para esto, el proyecto adopta tres estándares abiertos:
| Protocolo | Propósito | Estado (mayo 2026) |
|---|---|---|
| **MCP** (Model Context Protocol) | Estándar para que modelos de IA accedan a datos externos de forma segura. | Versión 0.9 (draft). Jaeger implementa un *sidecar* para integrarlo. |
| **ACP** (Agent Client Protocol) | Define cómo interfaces de usuario (CLI, UIs) se comunican con agentes de IA. | Versión 0.5 (draft). Usado en Jaeger v2 para traducir consultas en lenguaje natural a queries de tracing. |
| **AG-UI** (Agent–User Interaction Protocol) | Estándar para interacción humano-IA en entornos de debugging. | Prototipo en desarrollo (issue [#8252](https://github.com/jaegertracing/jaeger/issues/8252)). |
Para diagnosticar un fallo en un pipeline de IA, un ingeniero podría escribir en la UI de Jaeger:
"Muestra todos los spans con errores 5xx en el servicio de pagos donde el tiempo de respuesta supera los 2 segundos, y agrupa por modelo de embedding utilizado."El backend de Jaeger, usando ACP, traduciría esta consulta en lenguaje natural a una query OTLP como:
resource:
service.name: "payment-service"
telemetry.sdk.language: "python"
span:
status.code: "ERROR"
duration > 2000ms
group_by:
- "ai.model.embedding"3. Soporte para tracing de aplicaciones de IA generativa
Jaeger está incorporando convenciones semánticas para rastrear aplicaciones de IA, definidas en los drafts de OpenTelemetry:
- Generative AI Agentic Systems (Issue #2664): Para rastrear tareas, memoria y acciones de agentes autónomos.
- AI Sandboxes (Issue #3583): Para monitorear entornos efímeros de ejecución de código (como los usados en function calling de modelos).
{
"trace_id": "abc123",
"span": {
"name": "retrieval_augmented_generation",
"attributes": {
"ai.model.name": "text-embedding-ada-002",
"ai.token.usage.input": 128,
"ai.token.usage.output": 45,
"ai.tool.calls": ["vector_db_search", "external_api_call"],
"ai.sandbox.id": "temp-env-456"
}
}
}Impacto para DevOps / Infraestructura / Cloud / Seguridad
DevOps y SRE
- Consistencia entre entornos: Jaeger v2 permite ejecutar el mismo colector OTLP en desarrollo (con un modelo pequeño de lenguaje local) y en producción (con un LLM en cloud). Esto evita el clásico problema de «en staging funciona, en producción falla».
- Reducción de complejidad: Al unificar métricas, logs y trazas en OTLP, se simplifica el pipeline de observabilidad. Según datos del proyecto, equipos que migraron a Jaeger v2 reportaron una reducción del 40% en el tiempo de configuración de alertas.
# Antes (Jaeger 1.x)
docker run -d -p 16686:16686 \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
jaegertracing/all-in-one:1.55
# Después (Jaeger v2)
docker run -d -p 16686:16686 \
-e OTEL_COLLECTOR_CONFIG=/etc/otel-collector-config.yaml \
jaegertracing/all-in-one:2.0.0Cloud e Infraestructura
- Kubernetes: El proyecto recomienda usar el OpenTelemetry Operator para desplegar el colector OTLP. Un ejemplo de configuración:
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: jaeger-otlp
spec:
mode: deployment
config: |
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
exporters:
logging:
jaeger:
endpoint: "jaeger-query:14250"
tls:
insecure: true
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [jaeger, logging]- Costos: Al reducir pasos intermedios en el procesamiento de datos, Jaeger v2 optimiza recursos. En un cluster de 50 nodos, se reportó un ahorro del 15% en CPU (según pruebas internas con Prometheus).
Seguridad
- MCP y ACP: Estos protocolos permiten limitar el acceso de los modelos de IA a datos sensibles. Por ejemplo, un agente puede consultar un vector DB, pero MCP exige autenticación para cada acceso.
- Privacidad: Jaeger v2 soporta modelos pequeños locales (SLMs) para casos donde no se pueden usar LLMs en cloud por políticas de compliance.
Detalles técnicos
Arquitectura de Jaeger v2 con OpenTelemetry
La nueva arquitectura de Jaeger v2 sigue este flujo:
- Aplicaciones envían datos a OTLP (usando SDKs como
opentelemetry-pythonoopentelemetry-go). - OpenTelemetry Collector (en modo «jaeger») recibe los datos y los exporta a la UI de Jaeger.
- Jaeger Query consume directamente desde OTLP, sin necesidad de un adaptador intermedio.
| Componente | Versión | Rol |
|---|---|---|
