Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
[Este artículo es documentación preliminar y está sujeto a modificaciones].
Utiliza Aplicación de Azure Insights para monitorizar las trazas de agentes de Copilot Studio exportadas desde un entorno gestionado. Después de configurar la exportación, utiliza Azure Monitor y Application Insights para validar las ejecuciones de agentes, monitorizar la ejecución de nodos y herramientas, crear alertas y crear consultas y paneles personalizados para análisis operativo.
Note
- La telemetría a nivel de entorno está disponible para agentes alimentados tanto por el arnés estándar como por el arnés GitHub Copilot.
- Tras la vista previa privada, las invocaciones del agente raíz (
invoke_agent) ahora se emiten comodependencies, en lugar derequests. Como resultado, las trazas anteriores de invocación del agente raíz pueden seguir apareciendo en la tablarequests. - Para evaluar esta función de vista previa utilizando la última estrategia y capacidades de telemetría, puedes probar en un entorno no productivo con el ciclo de lanzamiento anticipado activado.
- Esta función está disponible solo para entornos gestionados.
- Solo los registros de los agentes que se construyen en Copilot Studio, excluyendo los agentes declarativos, están disponibles en Application Insights.
- Para adoptar únicamente una estrategia Application Insights a nivel de entorno para la telemetría de agentes de Copilot Studio, las organizaciones pueden optar por desactivar la telemetría de Application Insights a nivel de agente.
Este artículo explica cómo configurar la exportación a nivel de entorno de los trazos de agentes de Copilot Studio a Aplicación de Azure Insights a través del centro de administración de Power Platform.
Importante
Este artículo contiene la documentación de la versión preliminar de Microsoft Copilot Studio y está sujeto a modificaciones.
Las funciones de vista previa no están diseñadas para un uso en producción y pueden tener funcionalidad restringida. Estas características están disponibles antes del lanzamiento oficial para que pueda tener acceso anticipado y proporcionar comentarios.
Si está creando un agente listo para producción, consulte Información general sobre Microsoft Copilot Studio.
Prerequisites
Antes de configurar la conexión de exportación de datos, completa los requisitos previos de Exportar datos a Application Insights.
Qué es lo que se exporta
Al habilitar la exportación, la telemetría de trazas de los agentes de Copilot Studio se envía a Application Insights en un formato de observabilidad orientado a trazas y alineado con OpenTelemetry que admite la investigación, los paneles y las alertas.
Los eventos del agente de Copilot Studio se escriben en la tabla dependencies como intervalos. Cada evento exportado (InvokeAgent, ExecuteTool y OutputMessages) corresponde a una sola fila de span (itemType = dependency).
Cómo los spans forman una traza
La telemetría sigue el modelo de trazas y spans de OpenTelemetry y se reconstruye a través de las columnas operation_Id y operation_ParentId:
- Cada turno del agente es su propia traza, identificada por un
operation_Idcompartido que permite a Application Insights agrupar el turno y mostrarlo en la vista de transacciones de extremo a extremo. - El
InvokeAgenttramo es la raíz de la traza de su giro. SuExecuteTooly losOutputMessagesconectados se anidan debajo de él, cada uno conoperation_ParentId=InvokeAgentdel intervaloid. - Una conversación se desarrolla a lo largo de varios turnos, cada uno registrado como una traza independiente. Agrupa o filtra por
gen_ai.conversation.idpara volver a unir las intervenciones de una misma conversación. -
OutputMessagesLos spans no siempre emiten unaInvokeAgentraíz, lo que significa que pueden (por diseño) llegar sin un padre coincidente y aparecer como una traza independiente de un solo nodo.
Crear un paquete de exportación
Crea un paquete de exportación con el tipo de exportación configurado en Copilot Studio siguiendo las instrucciones en Crear un paquete de exportación de la documentación del centro de administración de Power Platform.
Validación de la configuración
Después de guardar la configuración de exportación, ejecuta una conversación de prueba con el agente y confirma que la telemetría llega a Application Insights. La entrega de telemetría puede tardar hasta 24 horas en nuevas configuraciones. Valide que:
- Los spans de agente aparecen en la tabla
dependencies. - Los segmentos
InvokeAgent,ExecuteToolyOutputMessagesde cada turno comparten unoperation_Id.
Campos de Application Insights
La siguiente tabla muestra los campos de la dependencies tabla y qué campos se rellenan para cada uno de los tres eventos de agente exportados: InvokeAgent, ExecuteTool, y OutputMessages. La semántica de agentes y operaciones está en customDimensions (las gen_ai.* claves, como gen_ai.operation.name), no en las columnas nativas.
Campos de la tabla dependencies |
InvokeAgent | ExecuteTool | Mensajes de salida | Valor de ejemplo |
|---|---|---|---|---|
timestamp [UTC] |
✔️ | ✔️ | ✔️ | 6/11/2026, 5:02:13.501 AM |
id |
✔️ | ✔️ | ✔️ | 1111aaa1-aa11-11aa-11a1-a1aaa1111aa1 |
name |
✔️ | ✔️ | ✔️ | InvokeAgent / ExecuteTool / OutputMessages |
resultCode |
✔️ | ✔️ | ✔️ |
OK, ERROR |
type |
✔️ | ✔️ | ✔️ | GenAI |
target |
✔️ | ✔️ | ✔️ | GenAI |
data |
✔️ | ✔️ | ✔️ | invoke_agent / execute_tool / output_messages |
success |
✔️ | ✔️ | ✔️ | True |
duration |
✔️ | ✔️ | ✔️ | 0 |
performanceBucket |
✔️ | ✔️ | ✔️ | <250ms |
itemType |
✔️ | ✔️ | ✔️ | dependency |
customDimensions |
✔️ | ✔️ | ✔️ | Más información en las propiedades de customDimension |
operation_Id |
✔️ | ✔️ | ✔️ |
trace-1111aaa1-aa11-11aa-11a1-a1aaa1111aa1 (compartido por todos los segmentos del giro) |
operation_ParentId |
✔️ | ✔️ | ✔️ | La del turno InvokeAgentid para los tramos secundarios; la raíz de seguimiento para el tramo InvokeAgent |
client_Type |
✔️ | ✔️ | ✔️ | PC |
client_IP |
✔️ | ✔️ | ✔️ | 0.0.0.0 |
client_City |
✔️ | ✔️ | ✔️ | San Jose |
client_StateOrProvince |
✔️ | ✔️ | ✔️ | California |
client_CountryOrRegion |
✔️ | ✔️ | ✔️ | United States |
appId |
✔️ | ✔️ | ✔️ | 11111a1a-1111-1111-a111-1a1a1a11111a |
appName |
✔️ | ✔️ | ✔️ | - |
iKey |
✔️ | ✔️ | ✔️ | aa111a1a-a1aa-111a-111a-a111a111111a |
sdkVersion |
✔️ | ✔️ | ✔️ | dotnetc:2.23.0-29 |
itemId |
✔️ | ✔️ | ✔️ | a1a1111a-1111-11a1-1111-111111aa1a1a |
itemCount |
✔️ | ✔️ | ✔️ | 1 |
_ResourceId |
✔️ | ✔️ | ✔️ | - |
Propiedades de las dimensiones personalizadas
Cada tramo incluye el customDimensions JSON. La siguiente tabla muestra las claves comunes que aparecen en cada tramo:
| Key | Valor de ejemplo |
|---|---|
SpanId |
1111aaa1-aa11-11aa-11a1-a1aaa1111aa1 |
error.type |
404 |
Status.code |
1, 2 |
Status.message |
Descriptive failure message |
gen_ai.agent.id |
1aa11a11-1a1a-1a11-1a1a-1111aa1111aa |
gen_ai.agent.name |
MCS Agent |
gen_ai.conversation.id |
aaaaa111-1a1a-1111-1aa1-a111111a11a1 |
gen_ai.request.model |
Sonnet46 |
gen_ai.operation.name |
invoke_agent / execute_tool / output_messages |
env.id |
111a1aa1-a1aa-aaa1-a11a-11a111111111 |
microsoft.tenant.id |
11aaa111-1a11-1a1a-a111-aa1a111a111a |
microsoft.a365.agent.blueprint.id |
1111111a-aa11-1a11-a1a1-a11a1111a1a1 |
microsoft.a365.agent.platform.id |
111a1aa1-…_1a11111a-… |
microsoft.channel.name |
Copilot Studio Test Pane |
resource.provider |
copilot studio |
signal.category |
default |
a365.enabled |
True |
appinsights.enabled |
True |
user.id |
- |
user.email |
My.User@mytenant.onmicrosoft.com |
user.name |
My User |
client.address |
::ffff:00.00.00.00 |
telemetry.sdk.name |
A365ObservabilitySDK |
telemetry.sdk.language |
dotnet |
telemetry.sdk.version |
1.1.9.43597 |
Claves específicas para eventos
La siguiente tabla muestra las claves específicas de cada evento:
| Key | InvokeAgent | ExecuteTool | Mensajes de salida | Descripción |
|---|---|---|---|---|
gen_ai.input.messages |
✔️ | - | - | Matriz JSON de {role, parts:[{content, type}]}—el prompt de usuario |
gen_ai.output.messages |
- | - | ✔️ | Matriz JSON—la respuesta del agente |
gen_ai.tool.name |
- | ✔️ | - | Por ejemplo: workiqsharepoint:mcp_SharePointRemoteServer |
gen_ai.tool.type |
- | ✔️ | - | Por ejemplo: MCP - Power Platform Connector |
gen_ai.tool.call.id |
- | ✔️ | - | Identificador de invocación de herramienta |
gen_ai.tool.call.arguments |
- | ✔️ | - | Datos JSON enviados a la herramienta |
gen_ai.tool.call.result |
- | ✔️ | - | Datos JSON devueltos por la herramienta |
Descubre el esquema actual
El esquema documentado en este artículo podría evolucionar con el tiempo. En lugar de basarte únicamente en las tablas mencionadas anteriormente, utiliza las siguientes consultas para inspeccionar el esquema más reciente en vivo en tu propio entorno.
Lista de columnas nativas de la tabla
La siguiente consulta devuelve el esquema a nivel de columna de la dependencies tabla. Úsalo para confirmar columnas nativas disponibles al crear consultas, paneles de control o alertas.
dependencies
| getschema
| project ColumnName, ColumnType
| order by ColumnName asc
Descubre claves de dimensiones personalizadas (propiedades dinámicas)
La siguiente consulta lista todas las claves dentro del customDimensions JSON en la dependencies tabla: el nombre de la propiedad, en qué eventos del agente aparece (InvokeAgent, ExecuteTool, OutputMessages), y un valor de muestra. A diferencia del esquema de columnas nativo, estas propiedades son dinámicas, por lo que esta consulta se mantiene precisa a medida que el SDK añade nuevas gen_ai.* u otras claves. Úsalo como fuente viva de verdad para los atributos disponibles.
dependencies
| where timestamp > ago(7d)
| mv-expand Key = bag_keys(customDimensions) to typeof(string)
| summarize Events = make_set(name), SampleValue = take_any(tostring(customDimensions[Key])) by Key
| order by Key asc
Supervisar la telemetría exportada
Usa los registros de Logs de Application Insights para consultar la actividad del agente e investigar la ejecución del agente o de herramientas. Toda la telemetría exportada se almacena en la tabla dependencies en forma de spans:
- Cada turno del agente es una traza, agrupada por un
operation_Idcompartido. - El
InvokeAgentspan es la raíz de la traza;ExecuteToolyOutputMessagesspans se anidan bajo él medianteoperation_ParentId. - Agrupa por
gen_ai.conversation.idpara agrupar en un hilo varios turnos de la misma conversación, y divide ese ID en_para incluir trazas de subagentes.
Paneles de Agentes en versión preliminar
Además de los Logs, Application Insights ofrece vistas integradas de Agentes (vista previa) que visualizan la telemetría GenAI exportada sin necesidad de escribir consultas Kusto. A medida que Copilot Studio escribe sus intervalos en la tabla dependencies, estos paneles leen esos datos directamente:
-
Ejecuciones de agentes: Enumera las invocaciones de agentes creadas a partir de los
InvokeAgenttramos, con su duración, éxito y la conversación a la que pertenece cada ejecución. Existen algunas limitaciones; Aprende más en Limitaciones y consideraciones conocidas. -
Herramientas: Agrega los
ExecuteToolspans para mostrar qué herramientas llaman los agentes, con qué frecuencia y cómo actúan. - Modelos: Resume el uso del modelo a lo largo de las ejecuciones, mostrando los modelos invocados y sus patrones de llamada.
Analizar la telemetría de agentes con Application Insights
Después de conectar tu entorno a Application Insights, este registra los datos de telemetría del agente cuando los usuarios interactúan con el agente, incluyendo durante las pruebas dentro de Copilot Studio. Para ver los datos de telemetría registrados, ve a la sección de Logs de tu recurso Application Insights en Azure. Aquí, puedes usar consultas Kusto para consultar y analizar tus datos. Aprende más en Consultas de ejemplo.
Consultas de ejemplo
Los siguientes ejemplos de consultas de Kusto reconstruyen las conversaciones de los agentes de Copilot Studio a partir de la dependencies tabla en Application Insights. Como cada span comparte una traza operation_Id en cada turno, las consultas ordenan los spans empezando por la raíz (el span InvokeAgent antes que sus spans hijos) dentro de cada traza.
Consulta 1: Devuelve un trazo completo para un ID de conversación específico
Esta consulta devuelve todos los spans de una conversación conocida, ordenados cronológicamente, con cada span raíz situado antes que sus spans hijo. Reemplaza el marcador ID de conversación por el ID de conversación de tu agente. Puedes encontrarlo introduciendo el siguiente comando mientras pruebas tu agente personalizado: /debug conversationid.
let LatestConvo = "<Conversation ID>";
dependencies
| where tostring(customDimensions["gen_ai.conversation.id"]) == LatestConvo
| order by operation_Id asc, iff(name == "InvokeAgent", 0, 1) asc, timestamp asc
| project timestamp, name, id, operation_Id,
operation_ParentId, duration, target, type, cloud_RoleName,
resultCode, customDimensions
Consulta 2: Obtener la conversación más reciente de un agente específico
Esta consulta encuentra la conversación más reciente de un agente nombrado dentro del periodo especificado. Devuelve cada tramo de esa conversación en el mismo orden cronológico, raíz primero. Sustituye el marcador de posición nombre del agente por el nombre de tu agente.
let Window = 7d;
let AgentName = "<Agent name>";
let LatestConvo = toscalar(
dependencies
| where timestamp > ago(Window)
| where tostring(customDimensions["gen_ai.agent.name"]) == AgentName
| where isnotempty(tostring(customDimensions["gen_ai.conversation.id"]))
| top 1 by timestamp desc
| project tostring(customDimensions["gen_ai.conversation.id"])
);
dependencies
| where timestamp > ago(Window)
| where tostring(customDimensions["gen_ai.conversation.id"]) == LatestConvo
| order by operation_Id asc, iff(name == "InvokeAgent", 0, 1) asc, timestamp asc
| project timestamp, name, id, operation_Id,
operation_ParentId, duration, target, type, cloud_RoleName,
resultCode, customDimensions
Consulta 3: Desglosar las propiedades conocidas de OpenTelemetry para genAI en columnas
Esta consulta devuelve la misma traza que la consulta 2, pero también analiza cada clave conocida de convención semántica de OpenTelemetry en su propia columna nombrada. El resultado es una tabla plana y definida explícitamente donde puedes ordenar, filtrar y escanear los campos de IA generativa como nombre de herramienta, modelo, prompt de usuario, respuesta del agente e ID de conversación directamente. Sustituye el marcador de posición nombre del agente por el nombre de tu agente.
let Window = 7d;
let AgentName = "<Agent name>";
let LatestConvo =
toscalar(
dependencies
| where timestamp > ago(Window)
| extend
AgentName_ = tostring(customDimensions["gen_ai.agent.name"]),
ConversationId_ = tostring(customDimensions["gen_ai.conversation.id"])
| where AgentName_ == AgentName
| where isnotempty(ConversationId_)
| summarize arg_max(timestamp, ConversationId_)
| project ConversationId_
);
dependencies
| where timestamp > ago(Window)
| extend
ConversationId = tostring(customDimensions["gen_ai.conversation.id"])
| where ConversationId == LatestConvo
| extend
OperationName = tostring(customDimensions["gen_ai.operation.name"]),
AgentId = tostring(customDimensions["gen_ai.agent.id"]),
AgentName = tostring(customDimensions["gen_ai.agent.name"]),
Model = tostring(customDimensions["gen_ai.request.model"]),
ToolName = tostring(customDimensions["gen_ai.tool.name"]),
ToolType = tostring(customDimensions["gen_ai.tool.type"]),
ToolCallId = tostring(customDimensions["gen_ai.tool.call.id"]),
ToolArguments = tostring(customDimensions["gen_ai.tool.call.arguments"]),
ToolResult = tostring(customDimensions["gen_ai.tool.call.result"]),
EnvironmentId = tostring(customDimensions["env.id"]),
TenantId = tostring(customDimensions["microsoft.tenant.id"]),
ChannelName = tostring(customDimensions["microsoft.channel.name"]),
BlueprintId = tostring(customDimensions["microsoft.a365.agent.blueprint.id"]),
PlatformId = tostring(customDimensions["microsoft.a365.agent.platform.id"]),
ResourceProvider = tostring(customDimensions["resource.provider"]),
SignalCategory = tostring(customDimensions["signal.category"]),
UserId = tostring(customDimensions["user.id"]),
UserName = tostring(customDimensions["user.name"]),
UserEmail = tostring(customDimensions["user.email"])
| extend
InputMessages = parse_json(tostring(customDimensions["gen_ai.input.messages"])),
OutputMessages = parse_json(tostring(customDimensions["gen_ai.output.messages"]))
| extend
UserInput = tostring(InputMessages[0].parts[0].content),
AgentOutput = tostring(OutputMessages[0].parts[0].content)
| order by
operation_Id asc,
iff(name == "InvokeAgent", 0, 1) asc,
timestamp asc
| project
timestamp, name, id, operation_Id, operation_ParentId, OperationName, ConversationId,
AgentId, AgentName, Model, ToolName, ToolType, ToolCallId, ToolArguments, ToolResult,
UserInput, AgentOutput, EnvironmentId, TenantId, ChannelName, BlueprintId, PlatformId,
ResourceProvider, SignalCategory, UserId, UserName, UserEmail, duration, target, type,
cloud_RoleName, resultCode, customDimensions
Consulta 4: Expandir dinámicamente todas las propiedades de OpenTelemetry de GenAI
Esta consulta devuelve los mismos intervalos que la consulta 3, pero cada clave gen_ai.* se desempaqueta dinámicamente de customDimensions en su propia columna con prefijo ga_. Como la proyección es dinámica, cualquier nuevo gen_ai.* atributo que el SDK emita posteriormente aparece automáticamente sin cambiar la consulta. Sustituye el marcador de posición nombre del agente por el nombre de tu agente.
let Window = 7d;
let AgentName = "<Agent name>";
let LatestConvo = toscalar(
dependencies
| where timestamp > ago(Window)
| where tostring(customDimensions["gen_ai.agent.name"]) == AgentName
| where isnotempty(tostring(customDimensions["gen_ai.conversation.id"]))
| top 1 by timestamp desc
| project tostring(customDimensions["gen_ai.conversation.id"])
);
dependencies
| where timestamp > ago(Window)
| where tostring(customDimensions["gen_ai.conversation.id"]) == LatestConvo
| order by operation_Id asc, iff(name == "InvokeAgent", 0, 1) asc, timestamp asc
| mv-apply Key = bag_keys(customDimensions) on (
where Key startswith "gen_ai."
| summarize OTelGenAI = make_bag(bag_pack(tostring(Key), customDimensions[tostring(Key)]))
)
| project timestamp, name, id, operation_Id, operation_ParentId,
duration, target, type, cloud_RoleName, resultCode,
OTelGenAI, customDimensions
| evaluate bag_unpack(OTelGenAI, 'ga_')
Limitaciones y consideraciones conocidas
- Esta función no admite escenarios de configuración de agentes no autenticados ni de múltiples inquilinos . Por lo tanto, Application Insights no los registra.
- Esta función está disponible actualmente solo en entornos de nube pública de Microsoft.
- En ciertos escenarios de agentes conectados, la relación padre-hijo entre trazas no está correctamente mapeada.
- El
durationvalor no está disponible para rastros de agentes alimentados por el arnés estándar. - Asegúrate de activar la propiedad de autenticación local en el recurso objetivo Application Insights.
- La exportación de telemetría no es transaccional. Durante eventos de servicio transitorios, pueden producirse pequeñas pérdidas de datos.
- Pueden producirse inconsistencias en los datos a medida que se implementan actualizaciones de ingestión relacionadas con el esquema.
- Esta función no captura eventos relacionados con temas como
TopicStart,TopicAction, yTopicEnd. - Actualmente, los identificadores de traza y de span usan una representación basada en GUID en lugar de los formatos hexadecimales estándar de OpenTelemetry: ID de traza de 32 caracteres e ID de span de 16 caracteres.
- Para simplificar la elaboración de informes y la resolución de problemas, evita enviar tanto telemetría a nivel de agente como de entorno a la misma instancia de Application Insights.
- La telemetría puede variar entre agentes alimentados por el arnés GitHub Copilot y agentes alimentados por el arnés estándar.
- Asegúrate de que tu configuración de Application Insights a nivel de entorno cumpla con tus requisitos de residencia de datos, privacidad y control de acceso basado en roles (RBAC).