Fehlerbehebung für direkte OTel-Observability

Verwenden Sie diesen Leitfaden, um die Telemetrie-Erfassung zu überprüfen und Probleme mit Agenttelemetrie zu diagnostizieren, die direkt über OTLP an Agent 365 gesendet wird. Es ist auf den direkten OTel-Pfad beschränkt – wenn Sie das Agent 365 SDK oder die Microsoft OpenTelemetry Distro verwenden, sehen Sie sich stattdessen diese Anleitungen an. Informationen zu Grenzwerten auf Übertragungsebene, Fehlercodes und Bedingungen für stillschweigendes Verwerfen finden Sie unter Grenzen und Bedingungen für das Verwerfen.

Überprüfen der Erfassung

Ein 200 OK ist kein Beweis für die Erfassung. Einige Drop-Bedingungen führen zu einem 200-Status mit partialSuccess: null, und Ihre Daten werden einfach nicht angezeigt (siehe Grenzwerte und Drop-Bedingungen). Überprüfen Sie immer Ihre ersten Durchläufe:

  1. HTTP-Status prüfen. 200 → fortfahren. 4xx → siehe Häufige Fallstricke.
  2. Analysieren Sie partialSuccess. null bedeutet, dass die API alles akzeptiert hat. Alles andere bedeutet, dass mindestens einige Spans beim Filter pro Span verworfen wurden.
  3. Warte ca. 5 Minuten und führe dann unten die Defender Erweiterte-Hunting-Abfrage aus.
  4. Keine Zeile? Verwenden Sie den Entscheidungsbaum unter Keine Daten in Defender.

Erweiterte Hunting-Abfrage von Defender

Die kanonische Suche (Verknüpfung über die von Ihnen gesendete Agent-Identität):

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

Die vollständige Liste der Oberflächen (Defender-Agent-Aktivitätsansichten, Microsoft 365 Admin Center, Microsoft Purview) und was jede benötigt, finden Sie unter Wo Ihre Daten angezeigt werden.

Keine Daten in Defender

  • partialSuccess.rejectedSpans == totalSpans → alle Ihre Spans wiesen einen fehlerhaften gen_ai.operation.name auf. Lösung: Verwenden Sie eine von invoke_agent, execute_tool, chat, output_messages (es ist chat, nicht inference).
  • 200 mit partialSuccess: null, aber keine Defender-Zeile nach 5 Min. → keinem Benutzer im Kundenmandanten ist eine Microsoft 365 E7- oder Microsoft Agent 365-Lizenz zugewiesen (Grenzen und Bedingungen für das Verwerfen, Verwerfungsbedingung 2). Lösung: Bestätigen Sie, dass mindestens ein Nutzer im Mandanten die Lizenz zugewiesen hat (nicht nur im Mandant vorhanden ist); ansonsten kontaktieren Sie das Agent 365 Onboarding-Team.
  • Spans werden angezeigt, aber der Ausführungsbaum ist beschädigt / einige untergeordnete Elemente sind verwaist → parentSpanId fehlt, traceId weicht ab oder gen_ai.conversation.id ist nicht für jeden Span festgelegt. Problembehebung: Überprüfen Sie die Span-Hierarchie und Ausführungsgruppierung.

Häufige Fallstricke

Symptom Wahrscheinliche Ursache Fix
401 Unauthorized Ungültige aud beim Token. Verwenden Sie 9b975845-388f-4429-889e-eab1ef63949c (oder api://9b975845-...).
403 Forbidden, Rolle / Umfang fehlt Das Token enthält Agent365.Observability.OtelWrite nicht. Registrieren Sie Ihre Microsoft Entra-App gemäß Bereiche und Einwilligung für die Rolle (S2S) bzw. den Bereich (delegiert). Für S2S muss das Token mit <resource>/.default bezogen werden.
403 Forbidden, Agentidentität stimmt nicht überein {agentId} in der URL ≠ appid / azp des Tokens, oder ein Span hat eine gen_ai.agent.id, die nicht mit dem authentifizierten Agent übereinstimmt. Die Route agentId muss die appId der anrufenden App sein. Bei von Blueprint abgeleiteten Identitäten ist dies die appId der Agent-Identität, nicht die appId des Blueprints. Stellen Sie sicher, dass das die gen_ai.agent.id jedes Span übereinstimmt.
200 OK sondern partialSuccess.rejectedSpans == totalSpans Alle Spans wiesen einen fehlerhaften gen_ai.operation.name auf. Verwenden Sie eine von invoke_agent, execute_tool, chat, output_messages. Es ist chat, nicht inference.
200 OK mit partialSuccess: null, aber es werden keine Daten in Defender angezeigt Keinem Benutzer im Mandanten des Kunden ist eine Microsoft 365 E7- oder Microsoft Agent 365-Lizenz zugewiesen (Grenzwerte und Löschbedingungen). Bestätigen Sie, dass mindestens ein Benutzer im Mandanten eine Microsoft 365 E7- oder Microsoft Agent 365-Lizenz zugewiesen hat (die vorhandene SKU reicht nicht aus). Überprüfen Sie dies mit KQL in Überprüfen der Erfassung; wenn nach 5 Minuten keine Daten eingehen, wenden Sie sich an das Agent 365-Team.
Spans werden in CloudAppEvents angezeigt, aber die Ausführung fehlt in den Defender-Ansichten zur Agent-Aktivität und im Microsoft 365 Admin Center. Die Ausführung hat keinen invoke_agent-Span. Beide Oberflächen basieren auf invoke_agent. Geben Sie bei jeder Ausführung genau ein invoke_agent-Span im Stamm aus; machen Sie chat / execute_tool / output_messages über parentSpanId zu dessen untergeordneten Elementen.
Ausführungsbaumstruktur ist beschädigt / Tool-Spans erscheinen verwaist parentSpanId fehlt oder traceId weicht bei untergeordneten Spans ab. Siehe Span-Hierarchie und Ausführungsgruppierung. Jeder Span, der kein Stammelement ist, legt parentSpanId fest und teilt sich die traceId der Ausführung.
Tool-Spans weisen in Abfragen leere ChannelName / ConversationId auf Kanal/Unterhaltung war auf dem Tool-Span nicht festgelegt, und der übergeordnete invoke_agent befand sich nicht in derselben OTLP-Anforderung. Setzen Sie microsoft.channel.name und gen_ai.conversation.id auf jedem Span.
413 Payload Too Large Anforderungstext an > 1 MB. Teilen Sie die Spans auf mehrere Anforderungen auf.
429 Too Many Requests Das Rate-Limit wurde erreicht. Beachten Sie Retry-After: 1, und warten Sie ab mit Jitter.
Der Agent wird in den Dashboards als nicht identifiziert angezeigt gen_ai.agent.id ist leer oder keine GUID. Verwenden Sie die Entra appId des Agents. Wenn der Agent keine Entra-Registrierung hat, siehe Werte auswählen.

Nächste Schritte,