OpenTelemetry
Copilot CLI incluye trazas con OpenTelemetry. Con solo configurarlo en el SDK, puedes recolectar los datos de traza del proceso CLI.Uso básico
Habilitar las trazas del proceso CLI
Añade la configuracióntelemetry en config/copilot.php o indícala directamente como opción.
Opciones de TelemetryConfig
| Opción | Descripción |
|---|---|
otlpEndpoint | URL del endpoint OTLP HTTP |
filePath | Ruta del fichero para exportar trazas en formato JSON-lines |
exporterType | "otlp-http" o "file" |
sourceName | Nombre del scope de instrumentación |
captureContent | Si captura el contenido de los mensajes (prompt, respuesta) |
Propagación de W3C Trace Context
La mayoría de usuarios no necesitan esta funcionalidad. Con solo
TelemetryConfig puedes recolectar las trazas del CLI. Lo siguiente es una función avanzada para cuando quieres crear tus propios spans de OpenTelemetry en la app y verlos en la misma traza distribuida que los spans del CLI.traceparent/tracestate) en las peticiones JSON-RPC de session.create, session.resume y session.send.
Propagación automática (recomendado)
Con solo instalar el paqueteopen-telemetry/api, el contexto de traza se propaga automáticamente.
Provider personalizado
Si quieres usar tu propia lógica de obtención de contexto de traza:SDK → CLI (saliente)
Se inyectan automáticamentetraceparent/tracestate en las siguientes llamadas RPC:
session.create— al crear la sesiónsession.resume— al reanudar la sesiónsession.send— al enviar un mensaje
CLI → SDK (entrante)
Cuando el CLI invoca una herramienta, el contexto de traza se incluye en el array$invocation del handler de la herramienta.
open-telemetry/api está instalado, el contexto de OpenTelemetry durante la ejecución del handler de la herramienta se enlaza automáticamente con el span del CLI. No hace falta usar traceparent explícitamente.
Dependencias
| Paquete | Uso |
|---|---|
open-telemetry/api | Propagación automática de Trace Context (suggest, opcional) |
open-telemetry/sdk | Exportación de los datos de traza |
open-telemetry/api figura en la sección suggest de composer.json. Aunque no esté instalado, el SDK funciona con normalidad.
Consulta la información más reciente en el repositorio de GitHub.