- qué herramientas llamaron
- cuánto tiempo tardó cada solicitud de modelo
- cuántos tokens se gastaron
- dónde ocurrieron los fallos
Cómo fluye la telemetría desde el SDK
El Agent SDK ejecuta la CLI de Claude Code como un proceso secundario y se comunica con ella a través de una tubería local. La CLI tiene instrumentación OpenTelemetry integrada: registra tramos alrededor de cada solicitud de modelo y ejecución de herramienta, emite métricas para contadores de tokens y costos, y emite eventos de registro estructurados para indicaciones y resultados de herramientas. El SDK no produce telemetría propia. En su lugar, pasa la configuración al proceso CLI, y la CLI exporta directamente a su recopilador. La configuración se pasa como variables de entorno. De forma predeterminada, el proceso secundario hereda el entorno de su aplicación, por lo que puede configurar la telemetría en uno de dos lugares:- Entorno del proceso: establezca las variables en su shell, contenedor u orquestador antes de que su aplicación se inicie. Cada llamada a
query()las recoge automáticamente sin cambios de código. Este es el enfoque recomendado para implementaciones de producción. - Opciones por llamada: establezca las variables en
ClaudeAgentOptions.env(Python) uoptions.env(TypeScript). Úselo cuando diferentes agentes en el mismo proceso necesiten diferentes configuraciones de telemetría. En Python,envse fusiona sobre el entorno heredado. En TypeScript,envreemplaza completamente el entorno heredado, así que incluya...process.enven el objeto que pasa.
| Señal | Qué contiene | Habilitar con |
|---|---|---|
| Metrics | Contadores para tokens, costo, sesiones, líneas de código y decisiones de herramientas | OTEL_METRICS_EXPORTER |
| Log events | Registros estructurados para cada indicación, solicitud de API, error de API y resultado de herramienta | OTEL_LOGS_EXPORTER |
| Traces | Tramos para cada interacción, solicitud de modelo, llamada de herramienta y hook (beta) | OTEL_TRACES_EXPORTER más CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 |
Habilitar la exportación de telemetría
La telemetría está desactivada hasta que establezcaCLAUDE_CODE_ENABLE_TELEMETRY=1 y elija al menos un exportador. La configuración más común envía las tres señales sobre OTLP HTTP a un recopilador.
El siguiente ejemplo establece las variables en un diccionario y las pasa a través de options.env. El agente ejecuta una única tarea, y la CLI exporta tramos, métricas y eventos al recopilador en collector.example.com mientras el bucle consume el flujo de respuesta:
options.env completamente.
El exportador
console escribe telemetría en la salida estándar, que el SDK utiliza
como su canal de mensajes. No establezca console como un valor de exportador cuando se ejecute
a través del SDK. Para inspeccionar telemetría localmente, apunte
OTEL_EXPORTER_OTLP_ENDPOINT a un recopilador local o un contenedor Jaeger
todo en uno en su lugar.Vaciar telemetría de llamadas de corta duración
La CLI agrupa telemetría y exporta en un intervalo. En una salida limpia del proceso, intenta vaciar datos pendientes, pero el vaciado está limitado por un tiempo de espera corto, por lo que los tramos aún pueden descartarse si el recopilador es lento para responder. Si su proceso se mata antes de que la CLI se apague, cualquier cosa aún en el búfer de lotes se pierde. Reducir los intervalos de exportación reduce ambas ventanas. De forma predeterminada, las métricas se exportan cada 60 segundos y los trazos y registros se exportan cada 5 segundos. El siguiente ejemplo acorta los tres intervalos para que los datos lleguen al recopilador mientras una tarea corta aún se está ejecutando:Leer trazas de agentes
Los trazos le dan la vista más detallada de una ejecución de agente. ConCLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 establecido, cada paso del bucle del agente se convierte en un tramo que puede inspeccionar en su backend de rastreo:
claude_code.interaction: envuelve un único turno del bucle del agente, desde recibir una indicación hasta producir una respuesta.claude_code.llm_request: envuelve cada llamada a la API de Claude, con nombre de modelo, latencia y conteos de tokens como atributos.claude_code.tool: envuelve cada invocación de herramienta, con tramos secundarios para la espera de permiso (claude_code.tool.blocked_on_user) y la ejecución en sí (claude_code.tool.execution).claude_code.hook: envuelve cada ejecución de hook. Requiere rastreo beta detallado (ENABLE_BETA_TRACING_DETAILED=1yBETA_TRACING_ENDPOINT) además de las variables anteriores.
llm_request, tool y hook son secundarios del tramo claude_code.interaction envolvente. Cuando el agente genera un subagente a través de la herramienta Task, los tramos llm_request y tool del subagente se anidan bajo el tramo claude_code.tool del agente padre, por lo que la cadena de delegación completa aparece como un único trazo.
Los tramos llevan un atributo session.id de forma predeterminada. Cuando realiza varias llamadas a query() contra la misma sesión, filtre en session.id en su backend para verlas como una línea de tiempo. El atributo se omite si OTEL_METRICS_INCLUDE_SESSION_ID se establece en un valor falso.
El rastreo está en beta. Los nombres de tramos y atributos pueden cambiar entre versiones. Consulte
Traces (beta) en la referencia de Monitoreo
para las variables de configuración del exportador de trazas.
Vincular trazas a su aplicación
El SDK propaga automáticamente el contexto de trazo W3C en el subproceso CLI. Cuando llama aquery() mientras un tramo OpenTelemetry está activo en su aplicación, el SDK inyecta TRACEPARENT y TRACESTATE en el entorno del proceso secundario, y la CLI los lee para que su tramo claude_code.interaction se convierta en un secundario de su tramo. La ejecución del agente aparece entonces dentro del trazo de su aplicación en lugar de como una raíz desconectada.
Cuando la propagación del contexto de trazo está habilitada, la CLI también reenvía TRACEPARENT a cada comando Bash y PowerShell que ejecuta. Si un comando lanzado a través de la herramienta Bash emite sus propios trazos OpenTelemetry, esos trazos se anidan bajo el tramo claude_code.tool.execution que envuelve el comando.
La inyección automática se omite cuando establece TRACEPARENT explícitamente en options.env, por lo que puede fijar un contexto padre específico si es necesario. Las sesiones interactivas de CLI ignoran completamente TRACEPARENT entrante; solo las ejecuciones de Agent SDK y claude -p lo honran. Consulte Traces (beta) en la referencia de Monitoreo para la referencia completa de tramos y atributos.
Etiquetar telemetría de su agente
De forma predeterminada, la CLI informaservice.name como claude-code. Si ejecuta varios agentes o ejecuta el SDK junto con otros servicios que exportan al mismo recopilador, anule el nombre del servicio y agregue atributos de recursos para poder filtrar por agente en su backend.
El siguiente ejemplo cambia el nombre del servicio y adjunta metadatos de implementación. Estos valores se aplican como atributos de recursos OpenTelemetry en cada tramo, métrica y evento que emite el agente:
Atribuir acciones a sus usuarios finales
La CLI adjunta atributos de identidad a cada evento basado en la credencial que utiliza para llamar a Anthropic. Cuando construye una aplicación que sirve a muchos usuarios finales desde una implementación, estos atributos identifican la credencial de su servicio, no el usuario final en cuyo nombre actuó el agente. Para hacer que las llamadas de herramientas y la actividad de MCP sean atribuibles a los usuarios finales de su aplicación, inyecte la identidad del usuario final como atributos de recursos en cada llamada aquery(). Codifique porcentualmente los valores antes de interpolarlos, ya que OTEL_RESOURCE_ATTRIBUTES reserva comas, espacios y signos de igualdad. El siguiente ejemplo adjunta el usuario solicitante y el inquilino a cada tramo y evento de una solicitud:
tool_decision, tool_result, mcp_server_connection y permission_mode_changed se convierten en un registro de auditoría por usuario que puede reenviar a una plataforma de Gestión de Información y Eventos de Seguridad (SIEM). Consulte Auditar eventos de seguridad en la referencia de Monitoreo para la lista completa de eventos relevantes para la seguridad y los atributos que lleva cada uno.
Controlar datos sensibles en exportaciones
La telemetría es estructural de forma predeterminada. Las duraciones, nombres de modelos y nombres de herramientas se registran en cada tramo; los conteos de tokens se registran cuando la solicitud de API subyacente devuelve datos de uso, por lo que los tramos para solicitudes fallidas o abortadas pueden omitirlos. El contenido que su agente lee y escribe no se registra de forma predeterminada. Estas variables de opción adicional agregan contenido a los datos exportados:| Variable | Agrega |
|---|---|
OTEL_LOG_USER_PROMPTS=1 | Texto de indicación en eventos claude_code.user_prompt y en el tramo claude_code.interaction |
OTEL_LOG_TOOL_DETAILS=1 | Argumentos de entrada de herramienta (rutas de archivo, comandos de shell, patrones de búsqueda) en eventos claude_code.tool_result |
OTEL_LOG_TOOL_CONTENT=1 | Cuerpos de entrada y salida de herramienta completos como eventos de tramo en claude_code.tool, truncados en 60 KB. Requiere que el rastreo esté habilitado |
OTEL_LOG_RAW_API_BODIES | Solicitud y respuesta JSON completas de la API de Mensajes de Anthropic como eventos de registro claude_code.api_request_body y claude_code.api_response_body. Establezca en 1 para cuerpos en línea truncados en 60 KB, o file:<dir> para cuerpos sin truncar en disco con una ruta body_ref en el evento. Los cuerpos incluyen el historial de conversación completo y tienen contenido de pensamiento extendido redactado. Habilitar esto implica consentimiento para todo lo que las tres variables anteriores revelarían |
Documentación relacionada
Estas guías cubren temas adyacentes para monitoreo e implementación de agentes:- Rastrear costo y uso: lea datos de tokens y costos del flujo de mensajes sin un backend externo.
- Hosting del Agent SDK: implemente agentes en contenedores donde puede establecer variables OpenTelemetry a nivel de entorno.
- Monitoring: la referencia completa para cada variable de entorno, métrica y evento que emite la CLI.