Rozwiązywanie problemów z bezpośrednią obserwowalnością OTel

Skorzystaj z tego przewodnika, aby zweryfikować przyjmowanie telemetrii i zdiagnozować problemy z telemetrią agenta wysyłaną bezpośrednio do Agent 365 przez OTLP. Przewodnik dotyczy bezpośredniej ścieżki OTel – jeśli korzystasz z Agent 365 SDK lub Microsoft OpenTelemetry Distro, zobacz odpowiednie przewodniki. Dla limitów na poziomie transmisji, kodów błędów i warunków cichego odrzucenia, zobacz Limity i warunki odrzucenia.

Weryfikowanie pozyskiwania

200 OK nie jest dowodem pozyskiwania. Niektóre warunki odrzucenia zwracają 200 partialSuccess: null, a Twoje dane po prostu się nie pojawiają (zobacz Limity i warunki odrzucenia). Zawsze weryfikuj swoje pierwsze uruchomienia:

  1. Sprawdź stan HTTP. 200 → kontynuuj. 4xx → zobacz Typowe pułapki.
  2. Przeanalizuj partialSuccess. null oznacza, że API zaakceptowało wszystko. Wszystko inne oznacza, że przynajmniej część spanów została odrzucona przez filtr dla poszczególnych spanów.
  3. Odczekaj około 5 minut, a następnie uruchom poniżej zapytanie zaawansowanego wyszukiwania Defendera.
  4. Brak wiersza? Użyj drzewa decyzyjnego pod Brak danych w Defender.

Zapytanie zaawansowanego wyszukiwania Defender

Kanoniczne wyszukiwanie (łączenie na podstawie tożsamości agenta, którą wysłano):

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

Pełną listę obszarów (widoki aktywności agenta Defendera, centrum administracyjne Microsoft 365, Microsoft Purview) oraz wymagania dla każdego z nich znajdziesz w Gdzie pojawiają się dane.

Brak danych w Defender

  • partialSuccess.rejectedSpans == totalSpans → wszystkie spany miały nieprawidłowy gen_ai.operation.name. Poprawka: użyj jednego z invoke_agent, execute_tool, , chat( output_messages to jest chat, nie inference).
  • 200 z partialSuccess: null, ale po 5 minutach brak wiersza Defender → żaden użytkownik w dzierżawie klienta nie ma przypisanej licencji Microsoft 365 E7 ani Microsoft Agent 365 przypisanej (Limity i warunki odrzucenia, warunek odrzucenia 2). Naprawa: potwierdzenie, że przynajmniej jeden użytkownik w tenant ma przypisaną licencję (nie tylko obecną w tenant); w przeciwnym razie skontaktuj się z zespołem wdrożeniowym Agent 365.
  • Span pojawiają się, ale drzewo uruchomienia jest uszkodzone / niektóre elementy podrzędne są osierocone → brakuje parentSpanId, różne traceId, lub gen_ai.conversation.id nie są ustawione na każdym span. Poprawka: sprawdź hierarchię elementów span i grupowanie wierszy.

Typowe błędy

Objaw Najczęstsza przyczyna Napraw
401 Unauthorized Nieprawidłowy aud w tokenie. Użyj 9b975845-388f-4429-889e-eab1ef63949c (lub api://9b975845-...).
403 Forbidden, brak roli/zakresu Token nie zawiera Agent365.Observability.OtelWrite. Przypisz swoją aplikację Microsoft Entra do roli (S2S) lub zakresu (delegowanego) zgodnie z dokumentacją dotyczącą zakresów i zgody. Dla S2S, token musi być uzyskany za pomocą <resource>/.default.
403 Forbidden, niezgodność tożsamości agenta {agentId} w URL ≠ appid / azp tokena, lub span zawiera gen_ai.agent.id, która nie jest zgodna z uwierzytelnionym agentem. Trasa agentId musi być appId aplikacji wywołującej. W przypadku tożsamości wywodzących się z konspektu, chodzi o appId agenta, a nie appId konspektu. Upewnij się, że każde przęsło pasuje gen_ai.agent.id.
200 OK ale partialSuccess.rejectedSpans == totalSpans Wszystkie span miały nieprawidłowy gen_ai.operation.name. Użyj jednego z invoke_agent, execute_tool, chat, output_messages. To jest chat, a nie inference.
200 OK z partialSuccess: null, ale żadne dane nie pojawiają się w Defender Żaden użytkownik w dzierżawie klienta nie ma licencji Microsoft 365 E7 ani Microsoft Agent 365 przypisanej (Limity i warunki odrzucenia). Upewnij się, że przynajmniej jeden użytkownik w dzierżawie ma przypisaną licencję Microsoft 365 E7 lub Microsoft Agent 365 (sama obecność SKU nie wystarcza). Zweryfikuj za pomocą KQL w Weryfikacji przyjęcia danych; jeśli po 5 minutach nie pojawią się dane, skontaktuj się z zespołem Agent 365.
Span pojawiają się w CloudAppEvents, ale run nie jest widoczny w widokach aktywności agenta Defender ani w Centrum administracyjnym Microsoft 365 Przebieg nie zawiera span invoke_agent. Obie powierzchnie są invoke_agent. Emituj dokładnie jeden invoke_agent span na poziomie głównym każdego przebiegu; ustaw chat / execute_tool / output_messages jako jego elementy podrzędne poprzez parentSpanId.
Drzewo uruchomień jest uszkodzone/span narzędzi wydają się być osierocone Brak parentSpanId lub inny traceId na podrzędnych span. Zapoznaj się z Hierarchią span i grupowaniem przebiegów. Każdy rozpięty nie-pierwiastkowy ustawia parentSpanId i dzieli się z biegiem traceId.
Elementy span narzędziowe pokazują puste ChannelName / ConversationId w zapytaniach Kanał / rozmowa nie jest ustawiona na span narzędziowy, a element nadrzędny invoke_agent nie znajdował się w tym samym żądaniu OTLP. Ustaw microsoft.channel.name i gen_ai.conversation.id na każdym span.
413 Payload Too Large Treść żądania > 1 MB. Podziel rozpiętości na kilka zamówień.
429 Too Many Requests Osiągnięto limit żądań. Zachowaj Retry-After: 1 i wycofaj się.
Agent pojawia się jako niezidentyfikowany na pulpitach nawigacyjnych gen_ai.agent.id jest pusty lub nie jest prawidłowym GUID. Użyj Entra appId agenta. Jeśli agent nie jest zarejestrowany w Entra, zobacz Wybieranie wartości.

Następne kroki