Solución de problemas de observabilidad directa de OTel

Utilice esta guía para verificar la ingesta de telemetría y diagnosticar problemas con la telemetría de agentes enviada directamente a Agent 365 a través de OTLP. Está limitado a la ruta directa de OTel; si estás usando el Agent 365 SDK o el Microsoft OpenTelemetry Distro, consulte esas guías en su lugar. Para límites en el nivel de transmisión, códigos de error y condiciones de caída silenciosa, consulte Límites y condiciones de anulación.

Verificación de la ingesta

Un 200 OK no es prueba de ingesta. Algunas condiciones de anulación devuelven 200 con partialSuccess: null y sus datos simplemente no aparecen (consulte Límites y condiciones de anulación). Compruebe siempre sus primeras ejecuciones:

  1. Comprobar estado HTTP. 200 → continuar. 4xx → consulte Errores comunes.
  2. Analice partialSuccess null significa que la API lo aceptó todo. Cualquier otro valor significa que al menos algunos spans fueron descartados en el filtro por span.
  3. Espere ~5 minutos y luego ejecute la consulta de búsqueda avanzada de Defender a continuación.
  4. ¿No hay fila? Use el árbol de decisiones en No hay datos en Defender.

Consulta de búsqueda avanzada de Defender

La búsqueda canónica (unión a la identidad del agente que envió):

let agentIdToFind = "YOUR-AGENT-APP-ID-HERE";
CloudAppEvents
| where Timestamp > ago(1d)
| where ActionType in ("InvokeAgent", "InferenceCall", "ExecuteToolBySDK", "ExecuteToolByGateway", "ExecuteToolByMCPServer")
| extend resData = parse_json(tostring(RawEventData))
| extend AgentId = resData.AgentId
| extend TargetAgentId = resData.TargetAgentId
| extend AlternateId = resData.PlatformTargetAgentId
| where AgentId == agentIdToFind or TargetAgentId == agentIdToFind or AlternateId == agentIdToFind
| project Timestamp, ActionType, resData
| order by Timestamp desc

Para la lista completa de interfaces (vistas de actividad de agentes de Defender, Centro de administración de Microsoft 365, Microsoft Purview) y lo que requiere cada una, consulte Dónde se muestran sus datos.

No hay datos en Defender

  • partialSuccess.rejectedSpans == totalSpans → todos sus tramos tenían un gen_ai.operation.name incorrecto. Solución: use uno de invoke_agent, execute_tool, chat, output_messages (es chat, no inference).
  • 200 con partialSuccess: null pero ninguna fila de Defender después de 5 min → ningún usuario del inquilino del cliente tiene una licencia de Microsoft 365 E7 o de Microsoft Agent 365 asignada (Límites y condiciones de anulación, condición de anulación 2). Solución: confirme que al menos un usuario en el inquilino tenga la licencia asignada (no solo presente en el inquilino); de lo contrario, contacta con el equipo de incorporación de Agent 365.
  • Los tramos aparecen, pero el árbol de ejecución está roto o algunos secundarios están huérfanos → falta parentSpanId, traceId es diferente o gen_ai.conversation.id no está establecido en cada tramo. Solución: revise Jerarquía de intervalos y agrupación de ejecución

Errores comunes

Síntoma Causa más probable Corregir
401 Unauthorized aud incorrecto en el token. Use 9b975845-388f-4429-889e-eab1ef63949c (o api://9b975845-...).
403 Forbidden, falta el rol o el ámbito El token no lleva Agent365.Observability.OtelWrite. Integre la aplicación de Microsoft Entra en el rol (S2S) o el ámbito delegado, según Ámbitos y consentimiento. Para S2S, el token debe obtenerse con <resource>/.default.
403 Forbidden, incompatibilidad de identidad del agente {agentId} en URL ≠ appid / azp del token, o un tramo lleva un gen_ai.agent.id que no coincide con el agente autenticado. La ruta agentId debe ser el appId de la aplicación que realiza la llamada. Para las identidades derivadas de plantillas, este es el appId de la identidad del agente, no el appId de la plantilla. Asegúrese de que todos los tramos de gen_ai.agent.id coincidan.
200 OK pero partialSuccess.rejectedSpans == totalSpans Todos los tramos tenían un gen_ai.operation.name incorrecto. Use uno de invoke_agent, execute_tool, chat, output_messages. Es chat, no inference.
200 OK con partialSuccess: null pero no aparece ningún dato en Defender Ningún usuario en el inquilino del cliente tiene una licencia de Microsoft 365 E7 o Microsoft Agent 365 asignada (Límites y condiciones de anulación). Asegúrese de que al menos un usuario del inquilino tenga asignada una licencia de Microsoft 365 E7 o Microsoft Agent 365 (que la presencia del SKU no es suficiente). Comprobar con el KQL en Comprobación de la ingesta; si no llega nada tras 5 minutos, póngase en contacto con el equipo de Agent 365.
Los tramos aparecen en CloudAppEvents, pero no aparece la ejecución en las vistas de actividad del agente de Defender y en el Centro de administración de Microsoft 365 La ejecución no tiene ningún tramo invoke_agent. Ambas superficies desactivan la clave invoke_agent. Emita exactamente un tramo invoke_agent en la raíz de cada pasada; haga que chat / execute_tool / output_messages sean secundarios de este mediante parentSpanId.
El árbol de ejecución está roto o los tramos de herramientas aparecen huérfanos Faltan parentSpanId o difieren traceId en tramos secundarios. Consulte Jerarquía de intervalos y agrupación de ejecución. Cada tramo no raíz establece parentSpanId y comparte el traceId de la ejecución.
Los tramos de herramientas aparecen vacíos ChannelName / ConversationId en las consultas Canal o conversación no establecido en el tramo de herramientas y el elemento primario invoke_agent no estaba en la misma solicitud de OTLP. Establezca microsoft.channel.name y gen_ai.conversation.id en cada span.
413 Payload Too Large Cuerpo de la solicitud > 1 MB. Divida los tramos entre varias solicitudes.
429 Too Many Requests Se ha alcanzado el límite de solicitudes. Honor Retry-After: 1 y regreso con vibración.
El agente aparece como no identificado en los paneles gen_ai.agent.id está vacío o no es un GUID. Use el appId de Entra del agente. Si el agente no tiene registro en Entra, consulte Selección de valores.

Pasos siguientes

  • Conceptos de observabilidad de Agent 365 - Flujo de datos, modelos de identidad, autenticación, ámbitos y límites.
  • Guía de integración - Prerrequisitos, métodos de autenticación, configuración del SDK y lista de verificación para la incorporación.
  • Referencia de atributos: especificación por atributo y guía para seleccionar valores.