Usa OpenTelemetry con la Claude API
Agrega un destino en la Claude Console para enviar trazas de OpenTelemetry de tus solicitudes a la Messages API y de tus sesiones de Managed Agents a tu plataforma de observabilidad.
Con OpenTelemetry, la Claude API puede emitir un span (intervalo) por cada solicitud al modelo y por cada uso de herramienta que ejecuta. Puedes ver estos spans en tu plataforma de observabilidad sin cambiar tu código.
La API emite spans para tus solicitudes a la Messages API y tus sesiones de Managed Agents. Para recibirlos, agrega un destino en la Claude Console. Un destino le indica a la API el endpoint OTLP de tu plataforma de observabilidad y cómo autenticarse con él.
Qué necesitas
- El rol de administrador en una organización de la Claude Console, para agregar y cambiar destinos. Con el rol de desarrollador, puedes verlos. Si tu organización está en Claude Platform on AWS, inicia sesión en la Console a través de la AWS Console, como se describe en Iniciar sesión.
- Un endpoint OTLP/HTTP que acepte codificación protobuf en una URL HTTPS en el puerto 443. Si ejecutas tu propio OpenTelemetry Collector, su receptor OTLP/HTTP escucha en el puerto 4318 de forma predeterminada. Configura el receptor para que acepte HTTPS en el puerto 443, o coloca un balanceador de carga o un proxy inverso delante del Collector.
- Credenciales para el endpoint, como una clave de API.
1. Agrega un destino
-
En la Console, abre la página de configuración de OpenTelemetry de tu organización y haz clic en Add destination.
-
Configura el destino:
Campo Qué ingresar Provider Tu plataforma de observabilidad, o Custom si no aparece en la lista. Si eliges una plataforma de la lista, la Console te pide sus datos, como una clave de API, en lugar de OTLP endpoint URL, Request headers y OTLP traces endpoint URL. Name Opcional. Por ejemplo, "Plataforma de observabilidad de Acme". OTLP endpoint URL La URL HTTPS base del endpoint OTLP/HTTP de tu plataforma de observabilidad, con un nombre de host, no una dirección IP. Puede tener un prefijo de ruta, por ejemplo https://gateway.example.com/otlp. No agregues/v1/traces, porque la API lo agrega. Si estableces una OTLP traces endpoint URL, la API usa esa URL en su lugar.Request headers Los encabezados que la API envía con cada solicitud, por ejemplo el encabezado de clave de API de tu plataforma de observabilidad. Coloca las credenciales solo en los valores de los encabezados. Después de guardar, la Console no vuelve a mostrar los valores. Content mode Metadata only o Full content. Consulta en qué se diferencian los modos de contenido. Workspaces Los espacios de trabajo cuyos spans recibe el destino: All, Selected o All except. Consulta Elige los espacios de trabajo de un destino. OTLP traces endpoint URL Opcional, en Advanced settings. La URL completa del endpoint de trazas de tu plataforma de observabilidad, por ejemplo https://gateway.example.com/custom/traces. Establécela cuando la plataforma reciba trazas en una URL distinta de la OTLP endpoint URL más/v1/traces. Debe tener el mismo host que la OTLP endpoint URL.Maximum content size in MB Opcional, en Advanced settings cuando el modo de contenido es Full content. La cantidad máxima de contenido que la API envía en cada span. La Console la completa según el Provider que elijas. Cámbiala para que se ajuste a lo que acepta tu plataforma de observabilidad. Déjalo vacío para enviar tanto como la API permita. Consulta Límites de contenido. -
Haz clic en Add destination para guardar.
-
Haz clic en Test en el menú More actions del destino. Verás un mensaje que indica que el span de prueba se entregó a tu colector, o cómo falló la entrega (consulta Errores de entrega).
-
Comprueba que el span
anthropic.testhaya llegado a tu plataforma de observabilidad.
Admin API y CLI
También puedes agregar un destino con la Admin API en lugar de la Console. Inicia sesión en la CLI como administrador, o usa una clave de Admin API en ANTHROPIC_API_KEY. En Claude Platform on AWS, envía las solicitudes a https://aws-external-anthropic.{region}.api.aws en su lugar, firmadas con tus credenciales de AWS como en Realizar solicitudes. Allí, tu política de IAM decide quién puede administrar destinos. Una solicitud solo puede incluir los espacios de trabajo de tu cuenta de AWS en esa región.
client = anthropic.Anthropic()
destination = client.beta.organization.telemetry_destinations.create(
endpoint_url="https://gateway.example.com/otlp",
headers={"authorization": "Bearer YOUR_OBSERVABILITY_API_KEY"},
traces={"content_mode": "metadata_only"},
workspaces={"type": "all"},
)
print(destination.id)Una solicitud de creación acepta la configuración de la Console excepto Provider, así que ingresa tú mismo la URL del endpoint y los encabezados de tu plataforma de observabilidad. Establece traces.max_content_bytes, en bytes, para ajustarlo a lo que acepta tu plataforma de observabilidad (consulta Límites de contenido). Para listar, cambiar o eliminar destinos, o para agregar o quitar un espacio de trabajo, usa los demás métodos de la API de destinos de telemetría.
2. Elige los espacios de trabajo de un destino
Un destino recibe los spans de los espacios de trabajo que abarca. Elígelos cuando agregues el destino. En Workspaces, selecciona una de las siguientes opciones:
- All: Todos los espacios de trabajo de la organización, incluido el Default Workspace y los espacios de trabajo que se creen más adelante.
- Selected: Solo los espacios de trabajo que selecciones.
- All except: Como All, pero sin los espacios de trabajo que selecciones.
Para Selected o All except, selecciona los espacios de trabajo en el cuadro de búsqueda que aparece debajo de las opciones. Para cambiar más adelante los espacios de trabajo de un destino, abre su menú More actions en la página de configuración de OpenTelemetry mientras el filtro Workspace muestra All. Haz clic en Edit y luego elige otra opción de Workspaces o cambia los espacios de trabajo en el cuadro de búsqueda.
Si tienes el rol de desarrollador en la organización y el rol de Workspace Admin en un espacio de trabajo, puedes agregar ese espacio de trabajo a un destino Selected o quitarlo de él. Configura el filtro Workspace en ese espacio de trabajo y, luego, abre el menú More actions del destino. En Claude Platform on AWS, la Console no tiene el rol de Workspace Admin. Allí, es tu política de IAM la que decide quién puede agregar un espacio de trabajo a un destino o quitarlo de él.
La API envía los spans a cada destino habilitado que cubra el espacio de trabajo en el que se ejecuta la solicitud o la sesión.
3. Comprueba que llegan los spans
- En la Console, selecciona un espacio de trabajo que el destino cubra y envía una solicitud a la Messages API en el playground. También puedes enviar una solicitud a la Messages API desde tu aplicación o iniciar una sesión de Managed Agents en ese espacio de trabajo. Para iniciar una sesión, puedes seguir los pasos de Primeros pasos con Claude Managed Agents.
- En la Console, en la página de configuración de OpenTelemetry, comprueba que la columna Delivery del destino muestre Healthy. Esto puede tardar alrededor de un minuto.
- En tu plataforma de observabilidad, filtra por
service.name=claude-platformpara encontrar los spans de la solicitud.
Si la columna muestra Failing, mantén el puntero sobre ella para ver el último error. Para encontrar la causa probable, consulta Errores de entrega.
4. Conecta los spans de la API con tus propias trazas
De forma predeterminada, los spans de la API de una solicitud a la Messages API o de una sesión de Managed Agents están en sus propias trazas. Conéctalos con las trazas de tu aplicación para que queden anidados bajo tus propios spans.
La API lee el contexto de traza de cada solicitud desde el encabezado traceparent de W3C. Si el indicador de muestreo del encabezado está desactivado, la API no emite el span de la solicitud ni los spans que dependen de él. Claude Platform on AWS aún no admite este encabezado. Los spans de las solicitudes que le envías siempre inician sus propias trazas, incluso cuando el indicador de muestreo está desactivado.
Para conectar los spans de la API, configura el trazado del SDK en tu aplicación y llama al SDK desde dentro de uno de tus propios spans. Tu span contiene entonces el span del SDK, que a su vez contiene el span de la API. Envía todos estos spans a la misma plataforma de observabilidad para que pueda mostrarlos como una sola traza. Consulta las trazas de ejemplo de una solicitud a la Messages API y de una sesión de Managed Agents.
El siguiente ejemplo envía un mensaje de usuario a una sesión dentro de tu propio span:
from opentelemetry import trace
tracer = trace.get_tracer("my-service")
with tracer.start_as_current_span("summarize_issues"):
client.beta.sessions.events.send(
session.id,
events=[
{
"type": "user.message",
"content": [{"type": "text", "text": "Summarize the open issues"}],
},
],
)El SDK escribe el encabezado traceparent con el propagador de tu aplicación, y el indicador de muestreo que contiene sigue a tu muestreador. Si tu aplicación usa un propagador distinto del contexto de traza de W3C, como B3, agrega también el propagador de contexto de traza de W3C.
Copia el contexto de traza del span actual en los encabezados de la solicitud, por ejemplo cuando creas una sesión de Managed Agents o envías un mensaje de usuario:
import os
import httpx2
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
headers = {
"x-api-key": os.environ["ANTHROPIC_API_KEY"],
"anthropic-version": "2023-06-01",
"anthropic-beta": "managed-agents-2026-04-01",
"content-type": "application/json",
}
# Copia el contexto de traza del span activo en los encabezados de la solicitud.
TraceContextTextMapPropagator().inject(headers)
httpx2.post(
f"https://api.anthropic.com/v1/sessions/{os.environ['SESSION_ID']}/events",
headers=headers,
json={
"events": [
{
"type": "user.message",
"content": [{"type": "text", "text": "Summarize the open issues"}],
},
],
},
)La Messages API también transmite la traza a tu servidor MCP cuando lo conectas con el conector MCP, para que pueda colocar sus propios spans bajo los spans de la API. Cada solicitud y notificación que la API envía a tu servidor MCP tiene un traceparent de W3C en params._meta. En una solicitud tools/call, este hace referencia al span anthropic.mcp_tool_use de ese uso de herramientas. En los demás mensajes, hace referencia al span anthropic.messages.create. Para una solicitud que la API no rastrea, como una cuyo encabezado traceparent tiene el indicador de muestreo desactivado, la API no envía ningún traceparent.
Próximos pasos
Obtén observabilidad de tu cliente.
Sigue una solicitud desde tu cliente hasta la Claude API.
Entrega y estado
Las siguientes reglas se aplican a los spans que la API envía a tus destinos.
- Al menos una vez: Un destino puede recibir el mismo span más de una vez. Para eliminar duplicados, usa el ID de traza y el ID de span.
- Mejor esfuerzo: Un span puede perderse antes de la entrega. La API no puede volver a enviar un span perdido.
- Compresión: La API comprime con gzip la primera solicitud de cada entrega y establece el encabezado
Content-Encoding: gzip. Si tu endpoint responde a esa solicitud con una respuesta400o415, la API vuelve a enviar de inmediato los mismos spans sin compresión. - Reintentos: La API vuelve a intentar una entrega más tarde, un número limitado de veces, después de un tiempo de espera agotado, un fallo de conexión, TLS o DNS, o una respuesta
408,429o5xx. No reintenta otros fallos. - Tiempos de espera: Para cada solicitud, tu endpoint debe completar el handshake TLS en 5 segundos y enviar los encabezados de respuesta en 5 segundos. Cada entrega agota su tiempo de espera después de 10 segundos en total, incluido el reenvío sin compresión.
- User agent: Cada solicitud tiene el encabezado
User-Agent: Claude-Platform.
La columna Delivery muestra el estado de cada destino. El estado puede tener hasta un minuto de retraso.
| Estado de entrega | Significado |
|---|---|
| Healthy | La última entrega se realizó correctamente. |
| Failing | La última entrega falló. Para ver el error, mantén el puntero sobre Failing. |
| No data | La API aún no ha intentado ninguna entrega. |
| Disabled | El destino no recibe spans. Para ver el motivo, mantén el puntero sobre Disabled. |
La API deshabilita un destino cuando:
- El endpoint envía una redirección
3xx. - El nombre de host del endpoint se resuelve en una dirección IP que no es pública.
- Todas las entregas fallan durante 24 horas.
La API no envía spans a un destino deshabilitado. Para reanudar la exportación, corrige la causa. Luego, con el filtro Workspace de la página de configuración de OpenTelemetry mostrando All, haz clic en Enable en el menú More actions del destino. La exportación se reanuda en aproximadamente un minuto.
Para cambiar un destino, abre su menú More actions mientras el filtro Workspace muestra All. Luego haz clic en Edit, Disable, Enable o Delete. Si cambias el host de la OTLP endpoint URL, vuelve a ingresar los valores de los encabezados. Si el destino tiene una OTLP traces endpoint URL, asígnale el mismo host nuevo o déjala vacía.
Límites
| Límite | Valor |
|---|---|
| Destinos por organización, incluidos los deshabilitados | 10 |
| Espacios de trabajo que seleccionas para un destino | 1,000 |
| Encabezados de solicitud por destino | 20 |
| Longitud del nombre de un encabezado | 128 bytes |
| Longitud del valor de un encabezado | 4,096 bytes |
| Longitud de todos los nombres y valores de encabezados juntos | 16,384 bytes |
| Longitud de una URL de endpoint | 2,048 caracteres |
Solución de problemas
| Problema | Qué revisar |
|---|---|
| No hay spans de la API | El espacio de trabajo necesita un destino habilitado que lo cubra. Consulta Elige los espacios de trabajo de un destino. Después de que un destino comienza a cubrir un espacio de trabajo, los spans de ese espacio de trabajo pueden tardar hasta un minuto en llegar. |
| La columna Delivery muestra Failing | Mantén el puntero sobre ella para ver el último error. Para encontrar la causa probable, consulta Errores de entrega. |
| La columna Delivery muestra Disabled | Mantén el puntero sobre ella para ver por qué. Para conocer los motivos, consulta cuándo la API deshabilita un destino. |
| Los spans no tienen prompts ni respuestas, pero el destino está configurado en Full content | Tu organización podría tener una restricción de manejo de datos de HIPAA, FERPA o K-12 con Anthropic. Consulta Modos de contenido. |
Errores de entrega
Cuando una entrega falla, la columna Delivery muestra Failing. Mantén el puntero sobre este estado para ver el error y, a continuación, busca la causa probable:
| Error | Causa probable |
|---|---|
| HTTP error (status 401) o HTTP error (status 403) | Un encabezado de autenticación incorrecto |
| HTTP error (status 404) | Una ruta incorrecta en la OTLP endpoint URL o en la OTLP traces endpoint URL |
| DNS resolution failure | El nombre de host del endpoint no se resuelve |
| TLS failure | Un problema de TLS, por ejemplo con el certificado del endpoint |
| Timeout | El endpoint no respondió a tiempo. Consulta los tiempos de espera de entrega |
| Connection failure | La API no pudo conectarse al endpoint |
Compatibility
- Supported platforms
- Claude APIBeta
- Claude Platform on AWSBeta
- Compatible con
- Messages API, Claude Managed Agents
- Tras la entrega, los datos quedan en poder del servicio que elegiste, fuera de Anthropic, bajo los controles de retención y acceso de ese servicio.
Was this page helpful?