שתף דרך


אירועי מדידת שימוש עבור Microsoft Dataverse

זרם הנתונים מספק כעת נתוני ביצועים הקשורים ל‏‫קריאות API נכנסות של Dataverse, לקריאות ביצוע של יישומי Plug-in של Dataverse ולקריאות SDK של Dataverse. הוא מספק גם נתונים לכשלים ביישום Plug-in ובפעולות SDK של Dataverse.

קריאות API נכנסות של Dataverse

אלה הן קריאות שבוצעו ל- API של Dataverse. הן יכולות להיות מממשק מאוחד (UCI), מלקוח אינטרנט מדור קודם או מלקוחות מותאמים אישית שמשתמשים ב- SDK וכן הלאה. ניתן למצוא אותן בטבלה requests של Application Insights, שמכילה את השדות הבאים.

  • שם: סוג הבקשה. סוגי הבקשות מתחלקים לשתי קטגוריות:

    • בקשת Web API: בקשה לנקודת קצה של OData v4 שבדרך כלל נמצאת בשימוש על-ידי ממשק מאוחד ולקוחות מודרניים. בקשה זו הופכת לפעולה המשותפת לשניהם. Web API הוא "עטיפה" המאפשרת את מודל התיכנות RESTful, אך לאחר שהנתונים מתקבלים, הכל הופך להיות אותו דבר בתוך השרת. כאשר התגובה מוחזרת, היא עוברת המרה ל- JSON אם הבקשה הגיעה מה- Web API.
    • בקשת שירות של ארגון: בקשה לנקודת קצה של ה- API הארגוני הנמצאת בשימוש על-ידי לקוחות SDK או לקוח האינטרנט מדור קודם.
  • משך: משך הזמן שלוקח לשרת להגיב לבקשה.

  • כתובת URL: כתובת ה- URL שאליה בוצעה הקריאה.

  • CustomDimensions:

    • UserAgent‎: ‏Application Insights מאכלס באופן אוטומטי את שדה סוכן המשתמש עם הערך PC מכיוון שיומנים אלה נדחפים משרת במרכז נתונים. Application Insights לא מאפשר לעקוף את שדה סוכן המשתמש. לפעמים, שדה סוכן המשתמש אינו זמין לאכלוס. ניתן להציג את סוכן המשתמש שממנו בוצעה הקריאה באמצעות השאילתה הבאה:

      requests
      | summarize count() by tostring(customDimensions.userAgent)
      

      Application Insights CustomDimensions UserAgent.

  • Operation_Name: שם הפעולה הניתן לקריאה שיוצג בתצוגות, כגון תצוגת עסקאות מקצה לקצה.

יומני ביצוע של יישום plug-in של Dataverse

יומנים אלה עבור יישומי plug-in מותאמים אישית, שפועלים עבור פעולה נתונה, נמצאים בטבלה dependency. להלן שאילתה לדוגמה:

dependencies
| where type == "Plugin"
| take 100

יומני ביצוע של יישום plug-in של Application Insights Dataverse.

  • שם/יעד: שם הסוג המלא של יישום ה- plug-in המתבצע.
  • משך: משך הזמן שנדרש לביצוע יישום ה- plug-in.
  • CustomDimensions:
    • עומק: העומק הנוכחי של הביצוע ב‏‫מחסנית הקריאות‬.
    • EntityName: שם הישות שבה פועל יישום ה- plug-in.
    • IsolationType: ערך שמציין אם יישום ה- plug-in מבוצע בארגז החול (Sandbox):
      • 1: ללא
      • 2: ארגז חול (Sandbox)
      • 3: חיצוני
    • PluginName: שם ידידותי למשתמש עבור יישום ה- plug-in.
    • PluginType: השם של סוג יישום ה- plug-in שמתבצע.
    • PluginVersion: גירסת יישום ה- plug-in שפורסם. הכוונה כאן היא לאפשר שימוש במידע זה לפתרון בעיות של עדכוני גירסאות.
    • שלב: מפות לערכים הבאים:
      • PreValidation = 10
      • PreOperation = 20
      • PreOperationBeforeExternalPlugins = 15
      • PreOperationAfterExternalPlugins = 25
      • MainOperation = 30
      • PostOperationBeforeExternalPlugins = 35
      • PostOperationAfterExternalPlugins = 45
      • PostOperation = 40
      • PostOperationDeprecated = 50
    • StepName: שם שלב העיבוד של הודעת ה- SDK. שם זה נוצר בדרך כלל על-ידי הכלי לרישומי Plug-in באמצעות מידע על ה- PluginName, PluginType ושם הפעולה, לדוגמה ErrorMessageTest.ThrowException: יצירת תיק לקוח.

מדידת שימוש בתוך קוד יישום ה- plug-in

כדי להבין מה קורה בתוך הקוד של יישום ה- plug-in, אפשר לכלול מדידת שימוש מותאמת אישית מתוך יישום ה- plug-in באמצעות Microsoft.Xrm.Sdk.PluginTelemetry.ILogger Interface ביישום ה- plug-in כדי לכתוב נתוני מדידת שימוש ישירות במשאב Application Insights. מידע נוסף: כתיבת מדידת שימוש במשאב Application Insights באמצעות ILogger ‏(Preview)

יומני SDK של Dataverse

יומנים אלה לפעולות SDK מופעלים כחלק מבקשה נכנסת. פעולות אלה נרשמות בטבלה dependency ב- Application Insights, מכיוון שהם נמצאים במעקב כיחסי תלות עבור הבקשה לביצוע. הן מזוהות לפי שם הסוג, החל מ- SDK. להלן שאילתה לדוגמה:

dependencies
| where type startswith "SDK"
| take 10

שאילתת SDK של Application Insights.

  • סוּג: סוג בקשת ה- SDK שהופעלה. לדוגמה, Retrieve‏, RetrieveMultiple‏, FetchXmlToQueryExpression ו- WhoAmI.
  • שם/יעד: זהו שם הישות שבה מתמקדת פעולת ה- SDK.
  • CustomDimensions:
    • ClientType: סוג הלקוח שממנו מגיעה הקריאה. כמה ערכים אפשריים הם Web,‏ UCIClient ו- OutlookFull.
    • EntityId: המזהה הייחודי של הישות שבה נעשה שימוש.
    • EntityName: שם הישות שבה נעשה שימוש.

חריגות

תראה פרטים על כשלים ביישום ה- plug-in ופעולות SDK ב- Application Insights. הטבלה exceptions ב- Application Insights משפרת את הלוח כשלים. פרטי כשלים אלה תואמים לשאר האירועים ביישום ה- plug-in ולקריאוות SDK בתצוגת מקצה לקצה. כל המידע הזמין נוסף לעמודות כאשר הדבר אפשרי ול- customDimensions כשאין התאמה מדויקת של העמודות.

תוכל להבחין שחלק מהשדות בטבלה exceptions לא מאוכלסים. הסיבה לכך היא שניתן להגדיר שדות אלה רק אם ה- SDK של Application Insights משמש להשמטת יומנים מהמקור. תכונה זו אוספת את נתוני מדידת השימוש של הפלטפורמה ולאחר מכן דוחפת אותם לתוך Application Insights בהתאם לסכימה של Application Insights.

טבלת חריגות של Application Insights.

exceptions
| take 10

שאילתה זו תחזיר את כל פרטי התכונה מהטבלה exception.

  • problemId/type‎: סוג החריגה.
  • outerMessage: הודעת החריגה.
  • customDimensions:
    • clientType: סוג הלקוח שממנו מגיעה הקריאה. כמה ערכים אפשריים הם Web,‏ UCIClient ו- OutlookFull.
    • exceptionSource: יישום ה- plug-in או הנקודה שבה הוצגה החריגה.
    • entityName: שם הישות שבה נעשה שימוש.
    • pluginName: שם יישום ה- plug-in שבו הוצגה החריגה.

פרטי תכונות בטבלת חריגות של Application Insights.

אם משתמש מדווח על שגיאה, ניתן להשתמש במזהה המשתמש (מזהה של 'מזהה Microsoft Entra') כדי להבין פרטים מהטבלה exception.

exceptions
| where user_Id == '00aa00aa-bb11-cc22-dd33-44ee44ee44ee'

מזהה הישות ושם הישות זמינים ב- customDimensions בטבלה dependency.

dependencies
| where type == "SDK Retrieve"

שאילתת אחזור SDK של Application Insights.

שאלות נפוצות (FAQ)

להלן כמה שאלות נפוצות הקשורות לאירועי מדידת שימוש עבור Dataverse.

כיצד אוכל לקבוע אם שדרוג יישום ה- plug-in שלי גרם לירידה בביצועים?

dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name

שם יישום ה- plug-in צריך להכיל גם את הגירסה עבור יישומי plug-in מותאמים אישית.

איך היו ביצועי ה- API לפני הבעיה שדווחה, בהתבסס על השעה ביום או על המיקום? האם הירידה בביצועים של API הייתה הדרגתית או פתאומית?

requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart 

תרשים זמן ביצועי ה- API של Application Insights.

בתרשים זה אנו יכולים לראות את ביצועי נקודת הקצה של ה- API בפרק זמן נתון כנגד מספר הבקשות שהוגשו.

ניתן גם להגדיר התראה בהתבסס על הביצועים של API מסוים ב- Application Insights.

האם אוכל לחקור לעומק שגיאות או כשלים בזמנים ספציפיים או עבור שמשתמשים ספציפיים כדי להבין את מחסנית הקריאות?

הלוח כשלים מציג מבט כולל על הכשלים בפרק זמן נתון. לאחר מכן תוכל לצמצם לכשל ספציפי בהתבסס על קריאת ה- API או סוג התלות כדי לראות את התצוגה מקצה לקצה.

פרטי כשלים ב- Application Insights.

האם אוכל ליצור לוחות מחוונים מותאמים אישית?

כן. אפשר לבנות לוחות מחוונים מותאמים אישית עם Application Insights.

האם אוכל לקבוע את ביצועי השימוש ביישום plug-in (זמן תגובה) ואת שיעורי הכשלים במהלך שימוש שיא?

כן. עיין בשאילתה לדוגמה הבאה כדי להבין את ביצועי יישום ה- plug-in.

dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart

ביצועי השימוש ביישום plug-in.

האם מדידת שימוש זו כוללת ויסות?

כן. פרטים בסיסיים של שגיאה 429 מסופקים כעת.

האם אוכל להבין נתיבי ביצוע? האם הקריאות המתבצעות על-ידי יישום ה- plug-in גורמות להאטה שלו?

כן. באפשרותך להציג את כל ההודעות ויישומי ה- plug-in שמבוצעים עבור כל בקשה.

משך הזמן של ביצוע כל ההודעות ויישומי ה- plug-in נרשם. אם ליישום plug-in נדרש יותר זמן, תוכל לזהות אותו. אם יישום ה- plug-in מבצע התקשרות חזרה אל Dataverse, משך הזמן של קריאה זו נרשם. מידע נוסף על יישומי plug-in מתוכנן לפריסה עתידית.

כל קריאה יוצאת שמתבצעת על-ידי יישום ה- plug-in תירשם באופן אוטומטי כתלות.

עסקה מקצה לקצה.

האם אוכל להציג מדידת שימוש עבור בקשה ספציפית?

Dataverse מחזיר x-ms-service-requestId בתגובת הכותרת לכל הבקשות. באמצעות requestId זה, תוכל לבצע שאילתה על כל נתוני מדידת השימוש.

union *
| where operation_ParentId contains <requestId>