Fehlerbehebung für direkte OTel-Observability

Verwenden Sie dieses Handbuch, um die Telemetrieaufnahme zu überprüfen und Probleme mit Agent-Telemetrie zu diagnostizieren, die direkt über OTLP an Agent 365 gesendet werden. Sie bezieht sich auf den direkten OTel-Pfad – wenn Sie das Agent 365 SDK oder die Microsoft OpenTelemetry Distro verwenden, lesen Sie stattdessen die entsprechenden Anleitungen. 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 Bedingungen zum Verwerfen geben 200 mit partialSuccess: null zurück, und Ihre Daten erscheinen einfach nicht (siehe Grenzwerte und Bedingungen zum Verwerfen). Überprüfen Sie immer ihre ersten Ausführungen:

  1. Http-Status überprü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. Warten Sie etwa 5 Minuten und führen Sie dann die unten stehende Defender-Abfrage für die erweiterte Suche 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

Eine vollständige Liste der Oberflächen (Defender Agentaktivitätsansichten, Microsoft 365 Admin Center, Microsoft Purview) und die anforderungen der einzelnen Oberflächen 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. Fix: Verwenden Sie eines von invoke_agent, execute_tool, , chatoutput_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: Stellen Sie sicher, dass mindestens einem Benutzer im Mandanten die Lizenz zugewiesen ist (nicht nur im Mandanten verfügbar); andernfalls wenden Sie sich an 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 Wahrscheinlichste Ursache Beheben
401 Unauthorized Ungültige aud beim Token. Verwenden 9b975845-388f-4429-889e-eab1ef63949c (oder api://9b975845-...).
403 Forbidden, fehlende Rolle/Bereich 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 abgerufen werden.
403 Forbidden, Nichtübereinstimmung der Agent-Identität {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 App-ID der aufrufenden 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 Aber partialSuccess.rejectedSpans == totalSpans Alle Spans wiesen einen fehlerhaften gen_ai.operation.name auf. Verwenden Sie eines von invoke_agent, execute_tool, chat, output_messages. Es ist chat, nicht inference.
200 OK mit partialSuccess: null, aber in Defender werden keine Daten angezeigt Keinem Benutzer im Kundenmandanten ist eine Microsoft 365 E7- oder Microsoft Agent 365-Lizenz zugewiesen (Grenzwerte und Abbruchbedingungen). Vergewissern Sie sich, dass mindestens ein Benutzer im Mandanten über eine Microsoft 365 E7- oder Microsoft Agent 365-Lizenz verfügt (die derzeit vorhandene SKU ist nicht ausreichend). Ü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 Run-Gruppierung. Jeder Span, der kein Stammelement ist, legt parentSpanId fest und teilt sich die traceId der Ausführung.
Tool-Spannen zeigen leere ChannelName / ConversationId in Abfragen an Kanal/Unterhaltung war auf dem Tool-Span nicht festgelegt, und der übergeordnete invoke_agent befand sich nicht in derselben OTLP-Anforderung. Legen Sie microsoft.channel.name und gen_ai.conversation.id für jede Spanne fest.
413 Payload Too Large Anfragetextkörper > 1 MB. Teilen Sie die Spans auf mehrere Anforderungen auf.
429 Too Many Requests Ratenlimit erreicht. Beachten Sie Retry-After: 1, und warten Sie ab mit Jitter.
Agent wird in Dashboards nicht identifiziert gen_ai.agent.id ist leer oder ist keine GUID. Verwenden Sie die Entra-AppId des Agents. Wenn der Agent keine Entra-Registrierung hat, siehe Werte auswählen.

Nächste Schritte