مشاركة عبر


أحداث قياس تتبع الاستخدام لـ Microsoft Dataverse

يوفر تدفق البيانات حاليًا بيانات الأداء المتعلقة باستدعاءات واجهة برمجة تطبيقات Dataverse API الواردة، واستدعاءات تنفيذ مكونات Dataverse الإضافية، واستدعاءات حزمة تطوير برامج Dataverse. كما يوفر أيضًا بيانات لعمليات الفشل في المكونات الإضافية وعمليات SDK لـ Dataverse.

استدعاءات واجهة برمجة تطبيقات Dataverse API الواردة

هذه هي الاستدعاءات الموجهة إلى واجهة برمجة تطبيقات Dataverse API. يمكن أن تكون من الواجهة الموحدة (UCI)، وعميل الويب القديم، والعملاء المخصصين الذين يستخدمون SDK، وما إلى ذلك. ويمكن العثور عليها في جدول ‎الطلبات الخاص بتطبيق 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: الاسم المقروء للعملية المراد عرضه على طرق العرض، مثل عرض المعاملة من طرف إلى طرف.

سجلات تنفيذ مكون Dataverse الإضافي.

توجد هذه السجلات للمكونات الإضافية المخصصة التي يتم تشغيلها لعملية معينة في جدول التبعية. فيما يلي نموذج استعلام:

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

سجلات تنفيذ مكون Dataverse الإضافي لتطبيق Application Insights.

  • الاسم/الهدف: اسم النوع المؤهل بالكامل للمكون الإضافي الجاري تنفيذه.
  • المدة: مقدار الوقت الذي استغرقه تنفيذ المكون الإضافي.
  • CustomDimensions:
    • العمق: العمق الحالي للتنفيذ في مكدس المكالمات.
    • EntityName: اسم الكيان الذي يتم التعامل معه بواسطة المكون الإضافي.
    • IsolationType: قيمة للإشارة إلى ما إذا كان يتم تنفيذ المكون الإضافي في وضع الحماية:
      • 1: ‏‫بلا
      • 2: وضع الحماية
      • 3: خارجي
    • PluginName: الاسم سهل الاستخدام للمكون الإضافي.
    • PluginType: اسم نوع المكون الإضافي الجاري تنفيذه.
    • PluginVersion: إصدار المكون الإضافي المنشور. الهدف هنا هو أن تكون قادرًا على استخدام هذه المعلومات لاستكشاف أخطاء تحديثات الإصدار وإصلاحها.
    • المرحلة: مخططات إلى القيم التالية:
      • PreValidation = 10
      • ما قبل التشغيل = 20
      • PreOperationBeforeExternalPlugins = 15
      • العملية_قبل_بعد_الإضافات_الخارجية = 25
      • MainOperation = 30
      • PostOperationBeforeExternalPlugins = 35
      • PostOperationAfterExternalPlugins = 45
      • ما بعد التشغيل = 40
      • PostOperationDeprecated = 50
    • StepName: اسم خطوة معالجة رسائل SDK. يتم إنشاء هذا عادةً بواسطة أداة تسجيل المكونات الإضافية باستخدام معلومات حول PluginName وPluginType، واسم العملية —على سبيل المثال ErrorMessageTest.ThrowException: إنشاء حساب.

قياس تتبع الاستخدام داخل كود المكون الإضافي

لفهم ما يحدث ضمن‎ كود المكون الإضافي الخاص بك، يمكنك تضمين قياس تتبع مخصص من داخل مكونك الإضافي باستخدام Microsoft.Xrm.Sdk.PluginTelemetry.ILogger Interface في كود المكون الإضافي لكتابة بيانات القياس عن بعد مباشرة إلى مورد Application Insights الخاص بك. لمزيد من المعلومات: اكتب القياس عن بعد لمورد Application Insights باستخدام ILogger (إصدار أولي)

سجلات SDK لـ Dataverse

هذه سجلات لعمليات SDK التي يتم تشغيلها كجزء من طلب وارد. يتم تسجيلها في جدول ‎التبعيات‎ في 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: اسم الكيان قيد الاستخدام.

الاستثناءات

سترى تفاصيل الإخفاقات في المكونات الإضافية وعمليات SDK في Application Insights. يقوم جدول الاستثناءات في Application Insights بتمكين لوحة حالات الفشل. ترتبط تفاصيل الفشل هذه ببقية الأحداث في البرنامج الإضافي واستدعاءات SDK في طريقة العرض من طرف إلى طرف. تتم إضافة جميع المعلومات المتاحة إلى الأعمدة عندما يكون ذلك ممكنًا وإلى customDimensions عندما لا يكون هناك تطابق تام مع الأعمدة.

ستلاحظ أن بعض الحقول في جدول الاستثناءات لم يتم ملؤها. هذا لأنه لا يمكن تعيين هذه الحقول إلا إذا تم استخدام SDK لـ Application Insights لإرسال السجلات من المصدر. تقوم هذه الميزة بتجميع القياس عن بعد للنظام الأساسي ثم تدفعه إلى Application Insights وفقًا لمخطط Application Insights.

جدول الاستثناءات في Application Insights.

exceptions
| take 10

سيعيد هذا الاستعلام جميع تفاصيل السمة من جدول الاستثناء.

  • problemId/type: نوع الاستثناء.
  • outerMessage: رسالة الاستثناء.
  • customDimensions:
    • clientType: نوع العميل الذي تأتي منه المكالمة. بعض القيم المحتملة هي Web وUCIClient وOutlookFull.
    • exceptionSource: المكون الإضافي أو النقطة التي تم فيها طرح الاستثناء.
    • entityName: اسم الكيان قيد الاستخدام.
    • pluginName: اسم المكون الإضافي حيث تم طرح الاستثناء.

تفاصيل سمات جدول استثناءات Application Insights.

إذا أبلغ مستخدم عن خطأ، يمكنك استخدام معرف المستخدم (معرف Microsoft Entra ID) لفهم التفاصيل من جدول ‎الاستثناء‎‎.

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

يتوفر معرف الكيان واسم الكيان في customDimensions في جدول التبعية.

dependencies
| where type == "SDK Retrieve"

استعلام استرداد SDK لـ Application Insights.

الأسئلة المتداولة (FAQs)

فيما يلي بعض الأسئلة المتداولة المتعلقة بأحداث قياس تتبع الاستخدام لـ Dataverse.

كيف يمكنني تحديد ما إذا كانت ترقية البرنامج الإضافي تسببت في تدهور الأداء؟

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

يجب أن يحتوي اسم المكون الإضافي أيضًا على إصدار المكونات الإضافية المخصصة.

كيف كان أداء واجهة برمجة التطبيقات قبل حدوث مشكلة تم الإبلاغ عنها، بناءً على الوقت من اليوم أو الموقع؟ هل كان تدهور واجهة برمجة التطبيقات تدريجيًا أم مفاجئًا؟

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

مخطط وقت أداء API لـ Application Insights.

في هذا المخطط، يمكننا رؤية أداء نقطة نهاية واجهة برمجة التطبيقات على مدار فترة زمنية مقابل عدد الطلبات التي يتم إجراؤها.

يمكنك أيضًا إعداد تنبيه استنادًا إلى أداء واجهة برمجة تطبيقات معينة هنا داخل Application Insights.

هل يمكنني التعمق في الأخطاء أو الإخفاقات في أوقات محددة أو لمستخدمين محددين للسماح بفهم مكدس المكالمات؟

يمنحك إلقاء نظرة على لوحة حالات الفشل نظرة عامة على الإخفاقات في فترة زمنية معينة. يمكنك بعد ذلك تضييق نطاق فشل معين بناءً على استدعاء واجهة برمجة التطبيقات أو نوع التبعية لمشاهدة العرض الشامل.

تفاصيل حالات فشل Application Insights.

هل يمكنني إنشاء لوحات معلومات مخصصة؟

نعم. يمكنك إنشاء لوحات معلومات مخصصة باستخدام Application Insights.

هل يمكنني تحديد أداء استخدام المكونات الإضافية (وقت الاستجابة) ومعدلات الفشل أثناء ذروة الاستخدام؟

نعم. راجع نموذج الاستعلام التالي لفهم كيفية أداء المكونات الإضافية.

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

أداء استخدام المكونات الإضافية.

هل سيكون قياس تتبع الاستخدام هذا عائقًا؟

نعم. يتم توفير تفاصيل خطأ 429 الأساسي حاليًا.

هل يمكنني فهم مسارات التنفيذ؟ هل المكالمات التي يتم إجراؤها بواسطة المكون الإضافي تؤدي إلى إبطاء المكون الإضافي؟

نعم. يمكنك عرض جميع الرسائل والمكونات الإضافية التي تم تنفيذها لأي طلب.

يتم تسجيل مدة تنفيذ كل الرسائل والمكونات الإضافية. إذا استغرق أي مكون إضافي مزيدًا من الوقت، فيمكنك تحديد هذا المكون الإضافي. إذا كان المكون الإضافي يقوم بمعاودة الاتصال بـ Dataverse، فسيتم تسجيل مدة تلك المكالمة. تم تخطيط مزيد من المعلومات حول المكونات الإضافية للنشر في المستقبل.

سيتم تسجيل أي مكالمة واردة يتم القيام بها بواسطة المكون الإضافية تلقائيا كتبعية.

الحركة الشاملة.

هل يمكنني عرض قياس تتبع استخدام لطلب معين؟

يقوم Dataverse بإرجاع x-ms-service-requestId في استجابة الرأس لجميع الطلبات. باستخدام requestId هذا، يمكنك الاستعلام عن جميع بيانات تتبع الاستخدام.

union *
| where operation_ParentId contains <requestId>