Un equipo instrumenta su agente contra el SDK de un vendor de tracing. Funciona. Seis meses después el pricing del vendor cambia, o el equipo se muda a Azure, o un cliente regulado exige que la telemetría nunca salga de su red. Ahora cada span del código está escrito contra un formato que solo un backend habla, y la "migración rápida" es un trimestre reescribiendo instrumentación que nunca fue el producto. No compraron observabilidad. La alquilaron, y el contrato acaba de vencer.
Esta es la misma trampa que elegir un modelo por el vendor que vendió la sala en lugar de la evaluación. La solución también es la misma: sé dueño del contrato, no del vendor.
El contrato es OpenTelemetry
OpenTelemetry (OTel) es el estándar neutral de vendor para emitir traces, métricas y logs. Instrumentas una vez, contra el SDK abierto, y la telemetría fluye a cualquier backend que hable OTel —sin tocar tu código—. La instrumentación está desacoplada del destino. Ese desacople es todo el punto, y para sistemas de agentes pasó de ser un lujo a ser estructural, porque los destinos ahora son múltiples y cambiantes: el backend nativo de una nube hoy, una plataforma de evaluación especializada mañana, tu propio store para la carga regulada.
Lo que hace esto real para agentes en lugar de servicios genéricos son las convenciones semánticas GenAI —un vocabulario estandarizado para las cosas que los agentes de verdad hacen—. El modelo de una solicitud es gen_ai.request.model ya sea GPT, Gemini o un modelo de pesos abiertos. El uso de tokens es gen_ai.usage.input_tokens sin importar el vendor. Las llamadas a tools, los nombres de operación y los pasos de agente tienen nombres de atributo acordados. Esto es lo que deja que un mismo span de trace sea entendido idénticamente por cada backend en lugar de ser un blob específico de vendor. La convención es la lingua franca; sin ella, los traces "portables" son solo bytes que nadie más puede leer.
El Collector es donde está el apalancamiento
Entre tus agentes y cualquier backend se ubica el Collector de OTel, y es la pieza más subutilizada del stack. Como toda la telemetría pasa por él, el Collector es donde haces las cosas que no quieres dispersas por el código de la aplicación:
- Redacta PII antes de que salga de tu red. Para trabajo regulado esto no es opcional —el Collector elimina o hashea campos sensibles para que el texto del prompt y los argumentos de tools que van a un backend ya estén limpios—. Hazlo aquí, una vez, no en cincuenta sitios de instrumentación.
- Muestrea deliberadamente. Conserva el 100% de los fallos y el 100% de las modificaciones autónomas de agentes; muestrea los éxitos rutinarios. Los fallos son donde está la señal; los traces de éxito a fidelidad completa son mayormente costo.
- Enruta y haz fan-out. El mismo trace puede ir al backend de tu nube para ops y a una plataforma de evaluación para scoring con LLM-as-judge, sin cambio aguas arriba.
La mayoría de los frameworks de agentes ya lo hablan
La buena noticia es que rara vez empiezas de cero. Los grandes frameworks de agentes —en las familias LangChain/LangGraph, CrewAI y AutoGen, y cada vez más los SDK nativos de nube— emiten traces OTel nativamente o vía plugin. Las dos grandes nubes terminan OTel sin traducción: en Microsoft, los traces aterrizan en Azure Monitor / Application Insights; en Google, en Cloud Trace y la suite más amplia de Cloud Observability. Cubrimos cada uno de esos stacks en su propia guía de campo —Microsoft y Google— pero el punto arquitectónico precede a la elección: si tus spans son OTel con convenciones GenAI, cuál backend de nube uses es una decisión de enrutamiento, no una reescritura.
Lo que igual sigue siendo tuyo
OTel define cómo capturar telemetría. No decide qué insight extraer. Los traces crudos te dirán una tasa de fallo; no van a, por sí solos, agrupar los fallos, mostrar la causa raíz de coordinación, ni atar una regresión al cambio autónomo de prompt de la semana pasada. Esa capa de interpretación —dashboards, evaluaciones sobre traces, detección de drift— es trabajo real y donde las plataformas hechas a propósito se ganan su lugar. Pero quieres que esa capa lea un trace estándar y portable debajo, para que la plataforma sea una elección que puedas reconsiderar y no un muro tras el cual quedaste emparedado.
Cierre
El agente es la parte fácil de instrumentar. El error caro es instrumentarlo contra un formato que solo un vendor lee.
OpenTelemetry con las convenciones semánticas GenAI es el contrato: instrumenta una vez, redacta y muestrea en el Collector, envía el mismo trace a Azure Monitor, Cloud Trace, una plataforma de evaluación o tu propio store —y cambia de opinión después sin cambiar tu código—. Sé dueño del trace. Alquila el backend.