Устранение неполадок: прямая наблюдаемость OTel

Используйте это руководство, чтобы проверить погружение телеметрии и диагностировать проблемы с телеметрией агента, отправляемой Агенту 365 напрямую через OTLP. Он ограничен на direct OTel — если вы используете Agent 365 SDK или Microsoft OpenTelemetry Distro, посмотрите эти руководства. Для ограничений на уровне провода, кодов ошибок и условий беззвучного дропа см. раздел Лимиты и условия дропа.

Проверка поглощения

200 ОК не является доказательством проглатывания. Некоторые условия выпадения возвращают 200 partialSuccess: null , и ваши данные просто не отображаются (см. Лимиты и условия выпадения). Всегда проверяйте первые заезды:

  1. Проверьте статус HTTP. 200 → продолжать. 4xx → см. Распространённые подводные камни.
  2. Разбор partialSuccess. null это значит, что API принял всё. Всё остальное означает, что хотя бы некоторые пролёты были сброшены на фильтре для каждого пролёта.
  3. Подождите ~5 минут, затем запустите Defender продвинутый запрос ниже.
  4. Нет ссоры? Используйте дерево решений в разделе Нет данных в Defender.

Defender продвинутый запрос

Канонический поиск (присоединение к присланной вами личности агента):

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

Полный список поверхностей (Defender виды активности агентов, Центр администрирования Microsoft 365, Microsoft Purview) и для каждой из них — где отображаются ваши данные.

В Defender нет данных

  • partialSuccess.rejectedSpans == totalSpans → у всех ваших пролётов был плохой gen_ai.operation.name. Исправление: используйте одну из invoke_agent, execute_tool, chat, output_messages (это chat, а не inference).
  • 200 с partialSuccess: null, но без строки Defender спустя 5 минут → ни один пользователь в арендаторе клиента не имеет лицензии Microsoft 365 E7 или Microsoft Agent 365 assigned (Ограничения и условия сброса условие падения 2). Исправление: убедитесь, что хотя бы один пользователь в арендаторе имеет лицензию (а не просто присутствует у арендатора); в противном случае свяжитесь с командой адаптации агента 365.
  • Пролёты появляются, но дерево бегов сломано / некоторые дети остаются сиротой → отсутствуют parentSpanId, отличаются traceIdили gen_ai.conversation.id не установлены на каждом пролёте. Исправление: просмотр иерархии Span и группировки забегов.

Распространенные ловушки

Симптом Наиболее вероятная причина Исправление
401 Unauthorized Ошибаюсь aud на жетоне. Используйте 9b975845-388f-4429-889e-eab1ef63949c (или api://9b975845-...).
403 Forbidden, отсутствующая роль / область Жетон не переносит Agent365.Observability.OtelWrite. Включите ваше Microsoft Entra приложение в должность (S2S) или область (делегированная) согласно Scopes и согласию. Для S2S токен должен быть получен с <resource>/.defaultпомощью .
403 Forbidden, несоответствие идентичности агента {agentId} в URL ≠ appid / azp токена, или span несёт A gen_ai.agent.id , не совпадающий с аутентифицированным агентом. Маршрут agentId должен быть appID звонящего приложения. Для идентичностей, полученных из чертежа, это идентификатор агента appId, а не blueprint appId. Убедитесь, gen_ai.agent.id что каждый диапазон совпадёт.
200 OK но partialSuccess.rejectedSpans == totalSpans У всех пролётов был плохой gen_ai.operation.name. Используйте один из invoke_agent, execute_tool, chat, output_messages. Это chatне так inference.
200 OK с partialSuccess: null, но данные не отображаются в Defender Ни один пользователь в арендаторе-клиенте не имеет лицензии Microsoft 365 E7 или Microsoft Agent 365 assigned (Ограничения и условия сброса). Убедитесь, что хотя бы одному пользователю в арендаторе присвоена лицензия Microsoft 365 E7 или Microsoft Agent 365 (наличие SKU недостаточно). Проверьте с KQL при проверке поглощения; если после 5 минут ничего не приземлится, свяжитесь с командой Agent 365.
Пролёты появляются в CloudAppEvents, но пробег отсутствует в Defender видах активности агента и в Центр администрирования Microsoft 365 Пробег не invoke_agent имеет пролёта. Обе поверхности отключаются invoke_agent. Излучать ровно один invoke_agent прорез в корне каждого запуска; сделатьexecute_tool / / chatoutput_messages его потомками через .parentSpanId
Дерево забега сломано / разъёмы инструментов выглядят сиротами Отсутствует parentSpanId или отличается traceId в детских промежутках. См. иерархию спанов и группировку загонов. Каждый некорневой размах задаёт parentSpanId и разделяет с traceIdсерией .
Размахи инструментов отображаются пустыми ChannelName / ConversationId в запросах Канал / разговор не был установлен в span инструментов, и родитель invoke_agent не был в том же OTLP-запросе. Устанавливайте microsoft.channel.name и gen_ai.conversation.id на каждом пролёте.
413 Payload Too Large Запросить тело > 1 МБ. Разделите промежутки между несколькими запросами.
429 Too Many Requests Достигнут лимит ставки. Честь Retry-After: 1 и отойди с дрожью.
Агент появляется неидентифицированным в панелях управления gen_ai.agent.id пусто или не является GUID. Используйте Entra appId агента. Если у агента нет регистрации Entra, см. значения выбора.

Дальнейшие действия