איתור ופתרון בעיות בתצפית ישירה של OTel

השתמש במדריך זה כדי לאמת קליטת טלמטריה ולאבחן בעיות בטלמטריה של סוכן שנשלחת ישירות אל Agent 365 דרך OTLP. הוא מותאם למסלול הישיר של OTel – אם אתה משתמש ב-Agent 365 SDK או ב-Microsoft OpenTelemetry Distro, עיין במקום זאת במדריכים האלה. למגבלות ברמת הפרוטוקול, קודי שגיאה ומצבי דחייה שקטה, ראו מגבלות ותנאי נפילה.

אימות קליטה

אישור של 200 אינו הוכחה לקליטה. חלק מתנאי הדחייה מחזירים 200 עם partialSuccess: null והנתונים פשוט לא מופיעים (ראו מגבלות ותנאי דחייה). תמיד אמת את ההרצות הראשונות:

  1. בדיקת מצב HTTP. 200 ← המשך 4xx ← ראה מלכודות נפוצות.
  2. ניתוח מבנה טקסט partialSuccess. null זה אומר שה-API קיבל הכול. כל דבר אחר אומר שלפחות חלק מהתקופות הושלכו בהתאם למסנן התקופות.
  3. המתן כ-5 דקות ולאחר מכן הרץ שאילתת Defender advanced-hunting למטה.
  4. אין שורה? השתמש בעץ ההחלטות תחת אין נתונים ב-Defender.

שאילתת Defender advanced-hunting

החיפוש הקנוני (הצטרפות לזהות הסוכן ששלחת):

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 (הגבלות ותנאי השחרור, תנאי שחרור 2). תיקון: אשר שלפחות למשתמש אחד בדייר הוקצה רישיון (ולא רק קיים בדייר); אחרת, פנה לצוות ההטמעה של Agent 365.
  • תקופות מופיעות, אך עץ הריצה פגום / חלק מהילדים יתומים ← חסרים parentSpanId, שונים traceId או gen_ai.conversation.id לא מוגדרים בכל תקופה. תיקון: עיינו בהיררכיית תקופות והרצת קיבוץ.

מכשולים נפוצים

סימפטום הסיבה הסבירה ביותר Fix
401 Unauthorized aud או אסימון שגוי. השתמש ב-9b975845-388f-4429-889e-eab1ef63949c (או ב-api://9b975845-...).
403 Forbidden, חסר תפקיד / טווח האסימון אינו מכיל Agent365.Observability.OtelWrite. שלב את אפליקציית Microsoft Entra לתפקיד (S2S) או לטווח (מועבר) לפי טווח והסכמה. עבור S2S, יש לקבל אסימון עם <resource>/.default.
403 Forbidden, אי-התאמה לזהות סוכן {agentId} בכתובת URL ≠ appid / azp של האסימון או תקופה נושאת A gen_ai.agent.id שלא תואמים לסוכן המאומת. המסלול agentId חייב להיות appid של אפליקציית ההתקשרות. בזהויות שנגזרות מה-Blueprint, זהו מזהה האפליקציה של זהות הסוכן, ולא appid של Blueprint. ודא שכל 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 (מגבלות ותנאי שחרור). ודא שלפחות משתמש אחד בדייר מחזיק ברישיון Microsoft 365 E7 או Microsoft Agent 365 (נוכחות SKU לא מספיקה). בדוק עם KQL באימות קליטה; אם דבר לא התקבל לאחר 5 דקות, צור קשר עם הצוות של Agent 365.
תקופות מופיעות ב-CloudAppEvents, אך הריצה חסרה בתצוגות פעילות הסוכן של Defender ובמרכז הניהול של Microsoft 365 הריצה אינה כוללת תקופת invoke_agent. שני מפתחות המשטחים invoke_agent כבויים. הפק תקופת invoke_agent אחד בדיוק בשורש של כל ריצה; הפוך את chat / execute_tool / output_messages לצאצאים שלה באמצעות parentSpanId.
עץ הריצה פגום / תקופות של הכלי נראות יתומות חסר parentSpanId או traceId שונה בתקופות הצאצאיות. ראה היררכיית תקופות וקיבוץ הרצות. כל תקופה שאינה שורש מגדירה parentSpanId ומשתפת את מזהה ההרצה traceId.
תקופות של הכלי מראות ערכים ריקים ChannelName / ConversationId בשאילתות ערוץ / שיחה לא מוגדרים בתקופת הכלי וההורה invoke_agent לא היה באותה בקשת OTLP. הגדר את microsoft.channel.name ואת gen_ai.conversation.id בכל תקופה.
413 Payload Too Large גוף בקשה >: 1MB. חלק את התקופות בין מספר בקשות.
429 Too Many Requests הגעת למגבלת הפגיעה. כיבד את Retry-After: 1 והתרחק בעצבנות.
הסוכן מופיע במצב לא מזוהה בלוחות המחוונים gen_ai.agent.id ריק או לא GUID. השתמש ב-appid של סוכן Entra. אם לסוכן אין רישום Entra, ראה בחירת ערכים.

‏‫השלבים הבאים‬