مشاركة عبر


تكوين Microsoft Azure Monitor Application Insights JavaScript SDK

يوفر Azure Application Insights JavaScript SDK تكوينا لتتبع تطبيقات الويب الخاصة بك ومراقبتها وتصحيحها.

تكوين SDK

حقول التكوين هذه اختيارية و افتراضية إلى خطأ ما لم يذكر خلاف ذلك.

للحصول على إرشادات حول كيفية إضافة تكوين SDK، راجع إضافة تكوين SDK.

اسم نوع الإعداد الافتراضي
AccountId

مُعرف حساب اختياري، إذا كان تطبيقك يقوم بتجميع المستخدمين في حسابات. لا توجد مسافات أو فواصل أو فاصلات منقوطة أو متساوية أو أشرطة عمودية
سلسلة قيمة فارغة
addRequestContext

توفير طريقة لإثراء سجلات التبعيات مع السياق في بداية استدعاء واجهة برمجة التطبيقات. الافتراضي غير معرف. تحتاج إلى التحقق مما إذا كان xhr موجودا إذا قمت بتكوين xhr سياق ذي صلة. تحتاج إلى التحقق مما إذا كنت تقوم بتكوين fetch request سياق ذي صلة وما fetch response إذا كنت fetch موجودا. وإلا فقد لا تحصل على البيانات التي تحتاجها.
(requestContext: IRequestionContext) => {[key: string]: any} غير مُعرف
ajaxPerfLookupDelay

الافتراضيات إلى 25 مللي ثانية. مقدار الوقت للانتظار قبل إعادة المحاولة للعثور على توقيتات windows.performance لطلب Ajax، الوقت بالمللي ثانية ويتم تمريره مباشرة إلى setTimeout().
عددي 25
معرف التطبيق

يُستخدم AppId للارتباط بين تبعيات AJAX التي تحدث من جانب العميل مع طلبات من جانب الخادم. عند تمكين واجهة برمجة تطبيقات Beacon، لا يمكن استخدامها تلقائيا، ولكن يمكن تعيينها يدويا في التكوين. القيمة الافتراضية خالية
سلسلة قيمة فارغة
autoTrackPageVisitTime

إذا كان صحيحاً، على صفحة عرض، يتم تعقب وقت عرض الصفحة السابقة وإرسالها كبيانات تتبع الاستخدام ويتم بدء مؤقت جديد لعرض الصفحة الحالية. يتم إرساله كمقياس مخصص اسمه PageVisitTime في milliseconds ويتم حسابه عبر دالة Date now() (إذا كانت متوفرة) ويعود مرة أخرى إلى (new Date()).getTime() إذا كانت now() غير متوفرة (IE8 أو أقل). الافتراضي خطأ.
منطقيه true
convertUndefined

توفير خيار للمستخدم لتحويل حقل غير معرف إلى قيمة معرفة من قبل المستخدم.
any غير مُعرف
ملف تعريف الارتباط

تمكين الإعدادات الافتراضية لاستخدام ملفات تعريف الارتباط، راجع إعدادات ICookieCfgConfig للحصول على الإعدادات الافتراضية الكاملة.
ICookieCfgConfig
[اختياري]
(منذ 2.6.0)
غير مُعرف
ملف تعريف الارتباطDomain

مجال ملفات تعريف الارتباط المخصص. من المفيد إذا كنت تريد مشاركة ملفات تعريف الارتباط Application Insights عبر المجالات الفرعية.
(منذ الإصدار 2.6.0) إذا cookieCfg.domain تم تعريفها، فإنها لها الأسبقية على هذه القيمة.
الاسم المستعار لـ cookieCfg.domain
[اختياري]
قيمة فارغة
مسار ملف تعريف الارتباط

مسار ملف تعريف الارتباط المُخصص. من المفيد إذا كنت تريد مشاركة ملفات تعريف الارتباط Application Insights خلف بوابة تطبيق.
إذا cookieCfg.path تم تعريفه، فإنه يأخذ الأسبقية.
الاسم المستعار لـ cookieCfg.path
[اختياري]
(منذ 2.6.0)
قيمة فارغة
مجالات عنوان الارتباط

تمكين عناوين الارتباطات لمجالات معينة
سلسلة[] غير مُعرف
correlationHeaderExcludedDomains

تعطيل عناوين الارتباطات لمجالات معينة
سلسلة[] غير مُعرف
correlationHeaderExcludePatterns

تعطيل عناوين الارتباطات باستخدام التعبيرات العادية
regex[] غير مُعرف
createPerfMgr

وظيفة معاودة الاتصال التي يتم استدعاؤها لإنشاء مثيل IPerfManager عند الحاجة ويتم enablePerfMgr تمكينها ، فهي تمكنك من تجاوز الإنشاء الافتراضي ل PerfManager () دون الحاجة إلى ذلك setPerfMgr() بعد التهيئة.
(النواة: IAppInsightsCore، notificationManager: INotificationManager) => IPerfManager غير مُعرف
عناوين مخصصة

قدرة المستخدم على توفير عناوين إضافية عند استخدام نقطة نهاية مخصصة. لا تتم إضافة customHeaders في لحظة إيقاف تشغيل المستعرض عند استخدام مرسل الملحق. وإضافة عناوين مخصصة غير مدعومة على IE9 أو أي إصدار سابق.
[{header: string, value: string}] غير مُعرف
diagnosticLogInterval

الفاصل الزمني للاستقصاء(الداخلي) (بالملّي ثانية) لقائمة انتظار تسجيل الدخول الداخلية
عددي 10000
disableAjaxTracking

إذا كان صحيحًا، فلا يتم تجميع اتصالات Ajax تلقائيًا. الافتراضي خطأ.
منطقيه true
disableCookiesUsage

خطأ افتراضي. قيمة منطقية تشير إلى ما إذا كان يجب تعطيل استخدام ملفات تعريف الارتباط بواسطة SDK. إذا كان صحيحا، فإن SDK لا تخزن أو تقرأ أي بيانات من ملفات تعريف الارتباط.
(منذ الإصدار 2.6.0) إذا cookieCfg.enabled تم تعريفه، فإنه يأخذ الأسبقية. يمكن إعادة تمكين استخدام ملفات تعريف الارتباط بعد التهيئة عبر core.getCookieMgr().setEnabled(true).
الاسم المستعار لـ cookieCfg.enabled
[اختياري]
true
تعطيل عناوين التصحيح

إذا كانت خاطئة، يضيف SDK عنوانين ("Request-Id" و"Request-Context") إلى جميع طلبات التبعية لربطها بالطلبات المقابلة على جانب الخادم. الافتراضي خطأ.
منطقيه true
disableDataLossAnalysis

إذا كانت خاطئة، يتم التحقق من المخازن المؤقتة لمرسل بيانات تتبع الاستخدام الداخلية عند بدء التشغيل للعناصر التي لم يتم إرسالها بعد.
منطقيه صحيح
disableExceptionTracking

إذا كان صحيحًا، فلا يتم تجميع الاستثناءات تلقائيًا. الافتراضي خطأ.
منطقيه true
disableFetchTracking

الإعداد الافتراضي ل disableFetchTracking هو false، مما يعني أنه ممكن. ومع ذلك، في الإصدارات السابقة ل 2.8.10، تم تعطيله بشكل افتراضي. عند التعيين إلى true، لا يتم جمع طلبات الإحضار تلقائيا. تم تغيير الإعداد الافتراضي من true إلى false في الإصدار 2.8.0.
منطقيه true
disableFlushOnBeforeUnload

خطأ افتراضي. إذا كان صحيحا، لا يتم استدعاء أسلوب المسح عند تشغيل الحدث onBeforeUnload
منطقيه true
disableIkeyDeprecationMessage

تعطيل رسالة خطأ إهمال مفتاح تقرير عن حالة النظام. إذا كان صحيحا، فلن يتم إرسال رسائل الخطأ.
منطقيه صحيح
disableInstrumentationKeyValidation

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

إذا كان صحيحًا، فلا يتم تجميع بيانات تتبع الاستخدام أو إرسالها. الافتراضي خطأ.
منطقيه true
disableXhr

لا تستخدم XMLHttpRequest أو XDomainRequest (للإصدار 9 من Internet Explorer < ) بشكل افتراضي بدلا من ذلك حاول استخدام fetch() أو sendBeacon. إذا لم يتوفر أي نقل آخر، فإنه يستخدم XMLHttpRequest
منطقيه true
distributedTracingMode

تعيين وضع التتبع الموزع. إذا تم تعيين وضع الذكاء الاصطناعي_AND_W3C أو وضع W3C، يتم إنشاء عناوين سياق تتبع W3C (traceparent/tracestate) وتضمينها في جميع الطلبات الصادرة. يتم توفير AI_AND_W3C للتوافق الخلفي مع أي خدمات تطبيقات Application Insights القديمة.
رقمي أو DistributedTracingModes DistributedTracing Modes.AI_AND_W3C
enableAjaxErrorStatusText

خطأ افتراضي. إذا كان صحيحا، قم بتضمين نص بيانات خطأ الاستجابة المنطقي في حدث التبعية على طلبات AJAX الفاشلة.
منطقيه true
enableAjaxPerfTracking

خطأ افتراضي. ضع علامة لتمكين البحث وتضمين توقيتات إضافية ل window.performance للمستعرض في قياسات Ajax (XHR وجلب) المبلغ عنها.
منطقيه true
enableAutoRouteTracking

تعقب تغييرات المسار تلقائياً في تطبيقات الصفحة المفردة (SPA). إذا كان صحيحا، يرسل كل تغيير مسار عرض صفحة جديد إلى Application Insights. يتم تسجيل تغييرات مسار التجزئة (example.com/foo#bar) أيضاً كطرق عرض صفحة جديدة.
ملاحظة: إذا قمت بتمكين هذا الحقل، فلا تقم بتمكين history الكائن لتكوين موجه React لأنك تحصل على أحداث عرض صفحة متعددة.
منطقيه true
تمكينCorsCorrelation

إذا كان صحيحا، يضيف SDK عنوانين ("Request-Id" و"Request-Context") إلى جميع طلبات CORS لربط تبعيات AJAX الصادرة بالطلبات المقابلة على جانب الخادم. الافتراضي هو false
منطقيه true
enableDebug

إذا كان صحيحاً، يتم طرح بيانات تصحيح الأخطاء الداخلية واستثناء بدلاً من التسجيل، بغض النظر عن إعدادات تسجيل عدة تطوير البرامج SDK. الافتراضي خطأ.
ملاحظة: يؤدي تمكين هذا الإعداد إلى إسقاط بيانات تتبع الاستخدام كلما حدث خطأ داخلي. يمكن أن يكون مفيدا لتحديد المشكلات المتعلقة بتكوين SDK أو استخدامه بسرعة. إذا كنت لا تريد فقدان بيانات تتبع الاستخدام في أثناء تصحيح الأخطاء، ففكر في استخدام loggingLevelConsole أو loggingLevelTelemetry بدلاً من enableDebug.
منطقيه true
enablePerfMgr

عند التمكين (صحيح) فإنه ينشئ perfEvents المحلية للتعليمات البرمجية التي تم وضع علامة عليها لإصدار perfEvents (عبر مساعد doPerf(). يمكن استخدامه لتحديد مشكلات الأداء داخل SDK استنادا إلى استخدامك أو اختياريا داخل التعليمات البرمجية الخاصة بك.
منطقيه true
enableRequestHeaderTracking

إذا كان صحيحا، يتم تعقب رؤوس طلبات AJAX وإحضارها، الإعداد الافتراضي هو خطأ. إذا لم يتم تكوين ignoreHeaders، فلن يتم تسجيل عناوين Authorization وX-API-Key.
منطقيه true
enableResponseHeaderTracking

إذا كان صحيحا، يتم تعقب رؤوس استجابة طلب AJAX وجلبه، والافتراضي خطأ. إذا لم يتم تكوين ignoreHeaders، فلن يتم تسجيل عنوان WWW-Authenticate.
منطقيه true
enableSessionStorageBuffer

القيمة الافتراضية true. إذا كان صحيحاً، يتم تخزين المخزن المؤقت مع جميع بيانات تتبع الاستخدام غير المُرسلة في موقع تخزين جلسة العمل. تتم استعادة المخزن المؤقت عند تحميل الصفحة
منطقيه صحيح
enableUnhandledPromiseRejectionTracking

إذا كان صحيحا، يتم تحديد رفض الوعد غير المعالج تلقائيا كخطأ JavaScript. عندما يكون disableExceptionTracking صحيحا (لا تتعقب الاستثناءات)، يتم تجاهل قيمة التكوين ولا يتم الإبلاغ عن رفض الوعد غير المعالج.
منطقيه true
eventsLimitInMem

عدد الأحداث التي يمكن الاحتفاظ بها في الذاكرة قبل بدء SDK في إسقاط الأحداث عند عدم استخدام Session Storage (الافتراضي).
رقم 10000
استبعادRequestFromAutoTrackingPatterns

توفير طريقة لاستبعاد مسار معين من التتبع التلقائي لطلب XMLHttpRequest أو إحضار. إذا تم تعريفه، بالنسبة لطلب Ajax / fetch الذي يتطابق عنوان URL للطلب مع أنماط regex، يتم إيقاف تشغيل التعقب التلقائي. الافتراضي غير معرف.
سلسلة[] | RegExp [] غير مُعرف
featureOptIn

تعيين تفاصيل الاشتراك في الميزة.

يتوفر حقل التكوين هذا فقط في الإصدار 3.0.3 والإصدارات الأحدث.
IFeatureOptIn غير مُعرف
idLength

يحدد الطول الافتراضي المستخدم لإنشاء جلسة عمل عشوائية جديدة ومعرفات المستخدم. الإعدادات الافتراضية إلى 22، كانت القيمة الافتراضية السابقة 5 (إصدار 2.5.8 أو أقل)، إذا كنت بحاجة إلى الاحتفاظ بالحد الأقصى السابق للطول يجب تعيين القيمة إلى 5.
عددي 22
تجاهل العناوين

AJAX وإحضار عناوين الطلب والاستجابة ليتم تجاهلها في بيانات السجل. لتجاوز الإعداد الافتراضي أو تجاهله، أضف صفيفا يحتوي على كافة الرؤوس المراد استبعادها أو صفيف فارغ إلى التكوين.
سلسلة[] ["التخويل"، "X-API-Key"، "WWW-Authenticate"]
isBeaconApiDisabled

إذا كانت خاطئة، يرسل SDK جميع بيانات تتبع الاستخدام باستخدام واجهة برمجة تطبيقات Beacon
منطقيه صحيح
isBrowserLinkTrackingEnabled

الافتراضي خطأ. إذا كان صحيحا، فإن SDK يتعقب جميع طلبات ارتباط المستعرض.
منطقيه true
isRetryDisabled

خطأ افتراضي. إذا كانت خاطئة، فأعد المحاولة على 206 (نجاح جزئي)، و408 (مهلة)، و429 (طلبات كثيرة جداً)، و500 (خطأ داخلي في الخادم)، و503 (خدمة غير متوفرة)، و0 (دون اتصال، فقط في حالة الكشف عنها)
منطقيه true
isStorageUseDisabled

إذا كان صحيحا، لا تقوم SDK بتخزين أو قراءة أي بيانات من التخزين المحلي وتخزين الجلسة. الافتراضي خطأ.
منطقيه true
loggingLevelConsole

تسجيل الأخطاء الداخلية لـ Application Insights إلى وحدة التحكم.
0: إيقاف التشغيل،
1: الأخطاء الحرجة فقط،
2: كل شيء (أخطاء وتحذيرات)
عددي 1
تسجيل قياس مستوى التسجيل

إرسال الأخطاء الداخلية لـ Application Insights كبيانات تتبع الاستخدام.
0: إيقاف التشغيل،
1: الأخطاء الحرجة فقط،
2: كل شيء (أخطاء وتحذيرات)
عددي 1
maxAjaxCallsPerView

الافتراضي 500 - يتحكم في عدد مكالمات Ajax التي تتم مراقبتها لكل طريقة عرض صفحة. تعيين إلى -1 لمراقبة جميع اتصالات Ajax (غير المحدود) على الصفحة.
عددي 500
maxAjaxPerfLookupAttempts

الإعدادات الافتراضية معينة على 3. الحد الأقصى لعدد المرات للبحث عن توقيت window.performance (إذا كان متوفرا) مطلوب. لا تملأ جميع المستعرضات window.performance قبل الإبلاغ عن نهاية طلب XHR. لطلبات الإحضار، تتم إضافتها بعد اكتمالها.
عددي 3
maxBatchInterval

كم من الوقت تستغرق دُفعة بيانات تتبع الاستخدام قبل الإرسال (بالملّي ثانية)
عددي 15000
maxBatchSizeInBytes

الحد الأقصى لحجم دُفعة بيانات تتبع الاستخدام. إذا تجاوزت الدُفعة هذا الحد، يتم إرسالها على الفور وبدء دُفعة جديدة
عددي 10000
namePrefix

قيمة اختيارية تستخدم كلاحقة اسم ل localStorage واسم ملف تعريف ارتباط الجلسة.
سلسلة غير مُعرف
onunloadDisableBeacon

خطأ افتراضي. عند إغلاق علامة التبويب، يرسل SDK جميع بيانات تتبع الاستخدام المتبقية باستخدام واجهة برمجة تطبيقات Beacon
منطقيه true
onunloadDisableFetch

إذا كان الإحضار حافظا مدعوما، فلا تستخدمه لإرسال الأحداث أثناء إلغاء التحميل، فقد يستمر في العودة إلى الجلب() دون حفظ
منطقيه true
تجاوزPageViewDuration

إذا كان صحيحاً، يتم تغيير السلوك الافتراضي لـ trackPageView لتسجيل نهاية الفاصل الزمني لمدة عرض الصفحة عند الاتصال بـ trackPageView. إذا كانت الحالة خطأ (false) ولم يتم توفير مدة مُخصصة لـ trackPageView، يتم حساب أداء عرض الصفحة باستخدام واجهة برمجة التطبيقات لتوقيت التنقل. الافتراضي خطأ.
منطقيه true
perfEvtsSendAll

عند تمكين enablePerfMgr وIPerfManager قم بإطلاق INotificationManager.perfEvent() تحدد هذه العلامة ما إذا كان يتم تشغيل حدث (وإرسالها إلى جميع وحدات الإصغاء) لجميع الأحداث (true) أو فقط للأحداث 'الأصل' (<افتراضي> خاطئ).
IPerfEvent الأصل هو حدث لا يزال فيه IPerfEvent آخر قيد التشغيل عند نقطة إنشاء الحدث ولا تكون الخاصية الأصل الخاصة به فارغة أو غير معرفة. منذ إصدار v2.5.7
منطقيه true
مركز أخذ العينات

النسبة المئوية للأحداث التي يتم إرسالها. الافتراضي هو 100، ما يعني إرسال جميع الأحداث. قم بتعيينه إذا كنت ترغب في الحفاظ على الحد الأقصى للبيانات للتطبيقات واسعة النطاق.
عددي 100
sdkExtension

تعيين اسم ملحق عدة تطوير البرامج SDK. يسمح فقط بالأحرف الأبجدية. تتم إضافة اسم الملحق كبادئة إلى علامة 'ai.internal.sdkVersion' (على سبيل المثال، 'ext_javascript:2.0.0'). الوضع الافتراضي خالٍ.
سلسلة قيمة فارغة
sessionCookiePostfix

قيمة اختيارية تستخدم كلاحقة اسم لاسم ملف تعريف ارتباط الجلسة. إذا لم يتم تعريفه، يتم استخدام namePrefix كاسم postfix لاسم ملف تعريف ارتباط جلسة العمل.
سلسلة غير مُعرف
SessionExpirationMs

يتم تسجيل جلسة عمل إذا كان قد استمر لهذا المقدار من الوقت بالملّي ثانية. الافتراضي هو 24 ساعة
عددي 86400000
جلسة عمل إعادة الوالد

يتم تسجيل جلسة عمل إذا كان المستخدم غير نشط لهذا المقدار من الوقت بالملّي ثانية. الافتراضي هو 30 دقيقة
عددي 1800000
خنقMgrCfg

تعيين خنق تكوين mgr حسب المفتاح.

يتوفر حقل التكوين هذا فقط في الإصدار 3.0.3 والإصدارات الأحدث.
{[key: number]: IThrottleMgrConfig} غير مُعرف
userCookiePostfix

قيمة اختيارية تستخدم كلاحقة اسم لاسم ملف تعريف ارتباط المستخدم. إذا لم يتم تحديده، فلن تتم إضافة postfix على اسم ملف تعريف ارتباط المستخدم.
سلسلة غير مُعرف

تتبع موزع

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

يوفر Azure Monitor تجربتين لاستهلاك بيانات التتبع الموزعة: طريقة عرض تشخيص المعاملات لمعاملة/طلب واحد وطريقة عرض خريطة التطبيق لإظهار كيفية تفاعل الأنظمة.

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

تمكين التتبع الموزع عبر Application Insights من خلال الأجهزة التلقائية أو SDKs

تدعم وكلاء Application Insights وSDKs ل .NET و.NET Core وJava وNode.jsوJavaScript التتبع الموزع أصلا.

مع تثبيت Application Insights SDK المناسبة وتكوينها، يتم جمع معلومات التتبع تلقائيا لأطر العمل والمكتبات والتقنيات الشائعة بواسطة المجمعات التلقائية لتبعية SDK. تتوفر القائمة الكاملة للتقنيات المدعومة في وثائق التجميع التلقائي للتبعية.

يمكن أيضا تتبع أي تقنية يدويا من خلال استدعاء TrackDependency على TelemetryClient.

نموذج بيانات ارتباط القياس عن بعد

يحدد Application Insights نموذج بيانات لارتباط بيانات تتبع الاستخدام الموزع. لإقران بيانات تتبع الاستخدام بعملية منطقية، يحتوي كل عنصر بيانات تتبع الاستخدام على حقل سياق يسمى operation_Id. يشترك كل عنصر بيانات تتبع الاستخدام في التتبع الموزع في هذا المعرف. لذلك حتى إذا فقدت بيانات تتبع الاستخدام من طبقة واحدة، فلا يزال بإمكانك إقران بيانات تتبع الاستخدام التي تم الإبلاغ عنها بواسطة المكونات الأخرى.

تتكون العملية المنطقية الموزعة عادة من مجموعة من العمليات الأصغر التي تتم معالجتها بواسطة أحد المكونات. يحدد طلب بيانات تتبع الاستخدام هذه العمليات. كل عنصر للقياس عن بعد للطلب له خاصه id الذي يحدده بشكل فريد وعالمي. ويجب أن تقوم جميع عناصر بيانات تتبع الاستخدام (مثل التتبعات والاستثناءات) المقترنة بالطلب بتعيين قيمة operation_parentId الطلب id.

يمثل قياس تتبع الاستخدام للتبعية كل عملية صادرة، مثل استدعاء HTTP لمكون آخر. كما أنه يحدد فريدا id من نوعه عالميا. يستخدم طلب بيانات تتبع الاستخدام، الذي بدأه استدعاء التبعية هذا، هذا id كملف operation_parentId.

يمكنك إنشاء طريقة عرض للعملية المنطقية الموزعة باستخدام operation_Id، ، وباستخدام operation_parentIdrequest.iddependency.id. تحدد هذه الحقول أيضا ترتيب السببية لمكالمات القياس عن بعد.

في بيئة الخدمات المصغرة، يمكن أن تنتقل الآثار من المكونات إلى عناصر تخزين مختلفة. يمكن أن يكون لكل مكون سلسلة اتصال خاصة به في Application Insights. للحصول على بيانات تتبع الاستخدام للعملية المنطقية، يستعلم Application Insights عن البيانات من كل عنصر تخزين.

عندما يكون عدد عناصر التخزين كبيرا ، فأنت بحاجة إلى تلميح حول المكان الذي تبحث فيه بعد ذلك. يحدد نموذج بيانات Application Insights حقلين لحل هذه المشكلة: request.source و dependency.target. يحدد الحقل الأول المكون الذي بدأ طلب التبعية. يحدد الحقل الثاني المكون الذي قام بإرجاع استجابة استدعاء التبعية.

للحصول على معلومات حول الاستعلام من مثيلات متباينة متعددة، راجع الاستعلام عن البيانات عبر مساحات عمل Log Analytics وتطبيقاتها ومواردها في Azure Monitor.

مثال

هيا بنا نلقي نظرة على مثال. يعرض تطبيق يسمى أسعار الأسهم سعر السوق الحالي للسهم باستخدام واجهة برمجة تطبيقات خارجية تسمى الأسهم. يحتوي تطبيق أسعار الأسهم على صفحة تسمى صفحة الأسهم التي يفتحها مستعرض الويب للعميل باستخدام GET /Home/Stock. يستعلم التطبيق عن واجهة برمجة تطبيقات المخزون باستخدام استدعاء GET /api/stock/valueHTTP .

يمكنك تحليل بيانات تتبع الاستخدام الناتجة عن طريق تشغيل استعلام:

(requests | union dependencies | union pageViews)
| where operation_Id == "STYz"
| project timestamp, itemType, name, id, operation_ParentId, operation_Id

في النتائج، تشترك جميع عناصر بيانات تتبع الاستخدام في جذر operation_Id. عند إجراء مكالمة Ajax من الصفحة، يتم تعيين معرف فريد جديد (qJSXU) لبيانات تتبع الاستخدام للتبعية، ويتم استخدام معرف pageView ك operation_ParentId. يستخدم طلب الخادم بعد ذلك معرف Ajax ك operation_ParentId.

نوع العنصر اسم ID operation_ParentId operation_Id
عرض الصفحة صفحة الأسهم STYz STYz
تبعية احصل على /الصفحة الرئيسية/المخزون qJSXU STYz STYz
طلب احصل على المنزل / المخزون KqKwlrSt9PA= qJSXU STYz
تبعية احصل على /api/stock/value bBrf2L7mm2g= KqKwlrSt9PA= STYz

عند إجراء المكالمة GET /api/stock/value إلى خدمة خارجية، تحتاج إلى معرفة هوية هذا الخادم حتى تتمكن من تعيين الحقل dependency.target بشكل مناسب. عندما لا تدعم الخدمة الخارجية المراقبة، target يتم تعيينها إلى اسم مضيف الخدمة. مثال على ذلك stock-prices-api.com . ولكن إذا عرفت الخدمة نفسها عن طريق إرجاع رأس HTTP محدد مسبقا، target تحتوي على هوية الخدمة التي تسمح ل Application Insights بإنشاء تتبع موزع عن طريق الاستعلام عن بيانات تتبع الاستخدام من تلك الخدمة.

رؤوس الارتباط باستخدام W3C TraceContext

ينتقل Application Insights إلى W3C Trace-Context، والذي يحدد:

  • traceparentيحمل معرف العملية الفريد عالميا والمعرف الفريد للمكالمة.:
  • tracestateيحمل سياق تتبع خاص بالنظام.:

يدعم أحدث إصدار من Application Insights SDK بروتوكول Trace-Context، ولكن قد تحتاج إلى الاشتراك فيه. (يتم الحفاظ على التوافق مع الإصدارات السابقة مع بروتوكول الارتباط السابق المدعوم من قبل Application Insights SDK.)

يتم إهمال بروتوكول HTTP للارتباط، والذي يسمى أيضا Request-Id. يحدد هذا البروتوكول عنوانين:

  • Request-Idيحمل المعرف الفريد عالميا للمكالمة.:
  • Correlation-Contextيحمل مجموعة أزواج الاسم والقيمة لخصائص التتبع الموزعة.:

يحدد Application Insights أيضا الملحق لبروتوكول HTTP الارتباطي. يستخدم Request-Context أزواج الاسم والقيمة لنشر مجموعة الخصائص التي يستخدمها المتصل المباشر أو المتصل. تستخدم Application Insights SDK هذا العنوان لتعيين dependency.target الحقول و request.source .

يتم تعيين نماذج بيانات W3C Trace-Context وApplication Insights بالطريقة التالية:

Application Insights W3C تتبع السياق
Id من Request و Dependency معرف الوالدين
Operation_Id معرف التتبع
Operation_ParentId معرف الأصل للامتداد الأصلي لهذه الامتداد. يجب أن يكون هذا الحقل فارغا إذا كان امتداد الجذر.

لمزيد من المعلومات، راجع نموذج بيانات بيانات تتبع الاستخدام في Application Insights.

تمكين دعم التتبع الموزع W3C

يتم تمكين هذه الميزة افتراضيا لجافا سكريبت ويتم تضمين الرؤوس تلقائيا عندما يكون نطاق صفحة الاستضافة هو نفسه النطاق الذي يتم إرسال الطلبات إليه (على سبيل المثال، صفحة الاستضافة ويتم example.com إرسال طلبات Ajax إلى example.com). لتغيير وضع التتبع الموزع، استخدم distributedTracingMode حقل التكوين. يتم توفير الذكاء الاصطناعي_AND_W3C افتراضيا للتوافق مع الإصدارات السابقة مع أي خدمات قديمة تم تجهيزها بواسطة Application Insights.

إذا تم إرسال طلبات XMLHttpRequest أو Fetch Ajax إلى مضيف نطاق مختلف، بما في ذلك النطاقات الفرعية، فلن يتم تضمين رؤوس الارتباط تلقائيا. لتمكين هذه الميزة، قم بتعيين حقل التكوينenableCorsCorrelation إلى true. إذا قمت بالتعيين enableCorsCorrelation إلى true، تتضمن جميع طلبات XMLHttpRequest وFetch Ajax رؤوس الارتباط. نتيجة لذلك ، إذا كان التطبيق الموجود على الخادم الذي يتم استدعاؤه لا يدعم traceparent الرأس ، فقد يفشل الطلب ، اعتمادا على ما إذا كان المتصفح / الإصدار يمكنه التحقق من صحة الطلب بناء على الرؤوس التي يقبلها الخادم. يمكنك استخدام حقل التكوينcorrelationHeaderExcludedDomains لاستبعاد مجال الخادم من حقن رأس الارتباط عبر المكونات. على سبيل المثال، يمكنك استخدامها correlationHeaderExcludedDomains: ['*.auth0.com'] لاستبعاد رؤوس الارتباط من الطلبات المرسلة إلى موفر هوية Auth0.

هام

للاطلاع على جميع التكوينات المطلوبة لتمكين الارتباط، راجع وثائق ارتباط JavaScript.

التصفية والمعالجة المسبقة للبيانات عن بعد

يمكنك كتابة التعليمات البرمجية لتصفية بيانات تتبع الاستخدام أو تعديلها أو إثرائها قبل إرسالها من SDK. تتضمن المعالجة البيانات التي يتم إرسالها من وحدات القياس عن بعد القياسية، مثل جمع طلبات HTTP وجمع التبعية.

  • يمكن أن تؤدي التصفية إلى تعديل بيانات تتبع الاستخدام أو تجاهلها قبل إرسالها من SDK عن طريق تنفيذ ITelemetryProcessor. على سبيل المثال، يمكنك تقليل حجم بيانات تتبع الاستخدام عن طريق استبعاد الطلبات من برامج الروبوت. على عكس أخذ العينات، يمكنك التحكم الكامل في ما يتم إرساله أو تجاهله، ولكنه يؤثر على أي مقاييس تستند إلى السجلات المجمعة. بناء على كيفية تجاهل العناصر، قد تفقد أيضا القدرة على التنقل بين العناصر ذات الصلة.

  • إضافة خصائص أو تعديلها إلى أي بيانات تتبع الاستخدام يتم إرسالها من تطبيقك عن طريق تنفيذ ملف ITelemetryInitializer. على سبيل المثال، يمكنك إضافة قيم محسوبة أو أرقام إصدارات لتصفية البيانات في البوابة الإلكترونية.

  • يقلل أخذ العينات من حجم بيانات تتبع الاستخدام دون التأثير على الإحصائيات الخاصة بك. يحافظ على نقاط البيانات ذات الصلة معا بحيث يمكنك التنقل بينها عند تشخيص مشكلة. في المدخل، يتم ضرب إجمالي الأعداد للتعويض عن أخذ العينات.

إشعار

تستخدم واجهة برمجة تطبيقات SDK لإرسال أحداث ومقاييس مخصصة.

تصفيه

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

لتصفية بيانات تتبع الاستخدام ، يمكنك كتابة معالج بيانات تتبع الاستخدام وتسجيله باستخدام TelemetryConfiguration. تمر جميع بيانات تتبع الاستخدام عبر المعالج الخاص بك. يمكنك اختيار إسقاطه من الدفق أو إعطائه للمعالج التالي في السلسلة. يتم تضمين بيانات تتبع الاستخدام من الوحدات النمطية القياسية، مثل مجمع طلبات HTTP ومجمع التبعية، وبيانات تتبع الاستخدام التي تعقبتها بنفسك. على سبيل المثال، يمكنك تصفية بيانات تتبع الاستخدام حول الطلبات الواردة من برامج الروبوتك أو مكالمات التبعية الناجحة.

تحذير

يمكن أن تؤدي تصفية بيانات تتبع الاستخدام المرسلة من SDK باستخدام المعالجات إلى تحريف الإحصائيات التي تراها في المدخل وتجعل من الصعب متابعة العناصر ذات الصلة.

بدلا من ذلك ، ضع في اعتبارك استخدام أخذ العينات.

تطبيقات الويب JavaScript

يمكنك تصفية بيانات تتبع الاستخدام من تطبيقات ويب JavaScript باستخدام ITelemetryInitializer.

  1. قم بإنشاء وظيفة معاودة اتصال مهيئ بيانات تتبع الاستخدام. تأخذ ITelemetryItem وظيفة رد الاتصال كمعلمة ، وهي الحدث الذي تتم معالجته. تؤدي العودة false من معاودة الاتصال هذه إلى تصفية عنصر بيانات تتبع الاستخدام.

    var filteringFunction = (envelope) => {
      if (envelope.data.someField === 'tobefilteredout') {
        return false;
      }
      return true;
    };
    
  2. أضف معاودة الاتصال بتهيئة بيانات تتبع الاستخدام:

    appInsights.addTelemetryInitializer(filteringFunction);
    

ITelemetryProcessor و ITelemetryInitializer

ما الفرق بين معالجات القياس عن بعد ومهيئات القياس عن بعد؟

  • هناك بعض التداخلات في ما يمكنك فعله بها. يمكن استخدام كلاهما لإضافة خصائص بيانات تتبع الاستخدام أو تعديلها، على الرغم من أننا نوصي باستخدام أجهزة التهيئة لهذا الغرض.
  • تعمل مهيئات القياس عن بعد دائما قبل معالجات القياس عن بعد.
  • يمكن استدعاء مهيئات القياس عن بعد أكثر من مرة. وفقا للاتفاقية ، لا يقومون بتعيين أي خاصية تم تعيينها بالفعل.
  • تسمح لك معالجات القياس عن بعد باستبدال عنصر القياس عن بعد أو تجاهله بالكامل.
  • يتم استدعاء جميع مهيئات بيانات تتبع الاستخدام المسجلة لكل عنصر بيانات تتبع الاستخدام. بالنسبة لمعالجات القياس عن بعد، تضمن SDK استدعاء معالج القياس عن بعد الأول. يتم تحديد ما إذا كان يتم استدعاء بقية المعالجات أم لا بواسطة معالجات القياس عن بعد السابقة.
  • استخدم مهيئات بيانات تتبع الاستخدام لإثراء بيانات تتبع الاستخدام بمزيد من الخصائص أو تجاوز خاصية موجودة. استخدم معالج بيانات تتبع الاستخدام لتصفية بيانات تتبع الاستخدام.

إضافة/تعديل الخصائص

استخدم مهيئات بيانات تتبع الاستخدام لإثراء بيانات تتبع الاستخدام بمعلومات إضافية أو لتجاوز خصائص بيانات تتبع الاستخدام التي تم تعيينها بواسطة وحدات القياس عن بعد القياسية القياسية.

على سبيل المثال، يقوم Application Insights لحزمة ويب بتجميع بيانات تتبع الاستخدام حول طلبات HTTP. بشكل افتراضي ، يقوم بوضع علامة على أي طلب برمز >استجابة = 400 على أنه فشل. إذا كنت تريد بدلا من ذلك التعامل مع 400 على أنه نجاح، فيمكنك توفير مهيئ بيانات تتبع الاستخدام التي تعين خاصية النجاح.

إذا قمت بتوفير مهيئ بيانات تتبع الاستخدام، استدعاؤه كلما تم استدعاء أي من طرق Track*(). يتضمن Track() هذا المهيئ الأساليب التي تستدعيها وحدات القياس عن بعد القياسية. وفقا للاتفاق، لا تقوم هذه الوحدات النمطية بتعيين أي خاصية تم تعيينها بالفعل بواسطة مهيئ. يتم استدعاء مهيئات القياس عن بعد قبل استدعاء معالجات القياس عن بعد، لذا فإن أي تخصيب يتم إجراؤه بواسطة أجهزة التهيئة تكون مرئية للمعالجات.

مهيئات القياس عن بعد JavaScript

أدخل مهيئ بيانات تتبع الاستخدام JavaScript، إذا لزم الأمر. لمزيد من المعلومات حول مهيئات بيانات تتبع الاستخدام ل Application Insights JavaScript SDK، راجع مهيئات بيانات تتبع الاستخدام.

أدخل مهيئ القياس عن بعد عن طريق إضافة وظيفة معاودة الاتصال onInit في تكوين البرنامج النصي لتحميل SDK JavaScript (الويب):

<script type="text/javascript">
!(function (cfg){function e(){cfg.onInit&&cfg.onInit(n)}var x,w,D,t,E,n,C=window,O=document,b=C.location,q="script",I="ingestionendpoint",L="disableExceptionTracking",j="ai.device.";"instrumentationKey"[x="toLowerCase"](),w="crossOrigin",D="POST",t="appInsightsSDK",E=cfg.name||"appInsights",(cfg.name||C[t])&&(C[t]=E),n=C[E]||function(g){var f=!1,m=!1,h={initialize:!0,queue:[],sv:"8",version:2,config:g};function v(e,t){var n={},i="Browser";function a(e){e=""+e;return 1===e.length?"0"+e:e}return n[j+"id"]=i[x](),n[j+"type"]=i,n["ai.operation.name"]=b&&b.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(h.sv||h.version),{time:(i=new Date).getUTCFullYear()+"-"+a(1+i.getUTCMonth())+"-"+a(i.getUTCDate())+"T"+a(i.getUTCHours())+":"+a(i.getUTCMinutes())+":"+a(i.getUTCSeconds())+"."+(i.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z",iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}},ver:undefined,seq:"1",aiDataContract:undefined}}var n,i,t,a,y=-1,T=0,S=["js.monitor.azure.com","js.cdn.applicationinsights.io","js.cdn.monitor.azure.com","js0.cdn.applicationinsights.io","js0.cdn.monitor.azure.com","js2.cdn.applicationinsights.io","js2.cdn.monitor.azure.com","az416426.vo.msecnd.net"],o=g.url||cfg.src,r=function(){return s(o,null)};function s(d,t){if((n=navigator)&&(~(n=(n.userAgent||"").toLowerCase()).indexOf("msie")||~n.indexOf("trident/"))&&~d.indexOf("ai.3")&&(d=d.replace(/(\/)(ai\.3\.)([^\d]*)$/,function(e,t,n){return t+"ai.2"+n})),!1!==cfg.cr)for(var e=0;e<S.length;e++)if(0<d.indexOf(S[e])){y=e;break}var n,i=function(e){var a,t,n,i,o,r,s,c,u,l;h.queue=[],m||(0<=y&&T+1<S.length?(a=(y+T+1)%S.length,p(d.replace(/^(.*\/\/)([\w\.]*)(\/.*)$/,function(e,t,n,i){return t+S[a]+i})),T+=1):(f=m=!0,s=d,!0!==cfg.dle&&(c=(t=function(){var e,t={},n=g.connectionString;if(n)for(var i=n.split(";"),a=0;a<i.length;a++){var o=i[a].split("=");2===o.length&&(t[o[0][x]()]=o[1])}return t[I]||(e=(n=t.endpointsuffix)?t.location:null,t[I]="https://"+(e?e+".":"")+"dc."+(n||"services.visualstudio.com")),t}()).instrumentationkey||g.instrumentationKey||"",t=(t=(t=t[I])&&"/"===t.slice(-1)?t.slice(0,-1):t)?t+"/v2/track":g.endpointUrl,t=g.userOverrideEndpointUrl||t,(n=[]).push((i="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",o=s,u=t,(l=(r=v(c,"Exception")).data).baseType="ExceptionData",l.baseData.exceptions=[{typeName:"SDKLoadFailed",message:i.replace(/\./g,"-"),hasFullStack:!1,stack:i+"\nSnippet failed to load ["+o+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(b&&b.pathname||"_unknown_")+"\nEndpoint: "+u,parsedStack:[]}],r)),n.push((l=s,i=t,(u=(o=v(c,"Message")).data).baseType="MessageData",(r=u.baseData).message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+l+")").replace(/\"/g,"")+'"',r.properties={endpoint:i},o)),s=n,c=t,JSON&&((u=C.fetch)&&!cfg.useXhr?u(c,{method:D,body:JSON.stringify(s),mode:"cors"}):XMLHttpRequest&&((l=new XMLHttpRequest).open(D,c),l.setRequestHeader("Content-type","application/json"),l.send(JSON.stringify(s)))))))},a=function(e,t){m||setTimeout(function(){!t&&h.core||i()},500),f=!1},p=function(e){var n=O.createElement(q),e=(n.src=e,t&&(n.integrity=t),n.setAttribute("data-ai-name",E),cfg[w]);return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=a,n.onerror=i,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||a(0,t)},cfg.ld&&cfg.ld<0?O.getElementsByTagName("head")[0].appendChild(n):setTimeout(function(){O.getElementsByTagName(q)[0].parentNode.appendChild(n)},cfg.ld||0),n};p(d)}cfg.sri&&(n=o.match(/^((http[s]?:\/\/.*\/)\w+(\.\d+){1,5})\.(([\w]+\.){0,2}js)$/))&&6===n.length?(d="".concat(n[1],".integrity.json"),i="@".concat(n[4]),l=window.fetch,t=function(e){if(!e.ext||!e.ext[i]||!e.ext[i].file)throw Error("Error Loading JSON response");var t=e.ext[i].integrity||null;s(o=n[2]+e.ext[i].file,t)},l&&!cfg.useXhr?l(d,{method:"GET",mode:"cors"}).then(function(e){return e.json()["catch"](function(){return{}})}).then(t)["catch"](r):XMLHttpRequest&&((a=new XMLHttpRequest).open("GET",d),a.onreadystatechange=function(){if(a.readyState===XMLHttpRequest.DONE)if(200===a.status)try{t(JSON.parse(a.responseText))}catch(e){r()}else r()},a.send())):o&&r();try{h.cookie=O.cookie}catch(k){}function e(e){for(;e.length;)!function(t){h[t]=function(){var e=arguments;f||h.queue.push(function(){h[t].apply(h,e)})}}(e.pop())}var c,u,l="track",d="TrackPage",p="TrackEvent",l=(e([l+"Event",l+"PageView",l+"Exception",l+"Trace",l+"DependencyData",l+"Metric",l+"PageViewPerformance","start"+d,"stop"+d,"start"+p,"stop"+p,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),h.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4},(g.extensionConfig||{}).ApplicationInsightsAnalytics||{});return!0!==g[L]&&!0!==l[L]&&(e(["_"+(c="onerror")]),u=C[c],C[c]=function(e,t,n,i,a){var o=u&&u(e,t,n,i,a);return!0!==o&&h["_"+c]({message:e,url:t,lineNumber:n,columnNumber:i,error:a,evt:C.event}),o},g.autoExceptionInstrumented=!0),h}(cfg.cfg),(C[E]=n).queue&&0===n.queue.length?(n.queue.push(e),n.trackPageView({})):e();})({
src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
onInit: function (sdk) {
    sdk.addTelemetryInitializer(function (envelope) {
    envelope.data = envelope.data || {};
    envelope.data.someField = 'This item passed through my telemetry initializer';
    });
}, // Once the application insights instance has loaded and initialized this method will be called
// sri: false, // Custom optional value to specify whether fetching the snippet from integrity file and do integrity check
cfg: { // Application Insights Configuration
    connectionString: "YOUR_CONNECTION_STRING"
}});
</script>

للحصول على ملخص للخصائص غير المخصصة المتوفرة على عنصر بيانات تتبع الاستخدام، راجع نموذج بيانات تصدير Application Insights.

يمكنك إضافة العديد من المهيئات كما تريد. يتم استدعاؤهم بالترتيب الذي تمت إضافتهم.

إضافة اسم دور سحابي ومثيل دور سحابة

استخدم مهيئ بيانات تتبع الاستخدام لتعيين ai.cloud.role العلامات و ai.cloud.roleInstance . تحدد هذه العلامات كيفية ظهور المكون الخاص بك في مخطط التطبيق في Azure Monitor.

appInsights.queue.push(() => {
appInsights.addTelemetryInitializer((envelope) => {
  envelope.tags["ai.cloud.role"] = "your role name";
  envelope.tags["ai.cloud.roleInstance"] = "your role instance";
});
});

بدءا من الإصدار 2.6.0، يوفر Azure Application Insights JavaScript SDK إدارة ملفات تعريف الارتباط المستندة إلى المثيل التي يمكن تعطيلها وإعادة تمكينها بعد التهيئة.

إذا قمت بتعطيل ملفات تعريف الارتباط أثناء التهيئة باستخدام disableCookiesUsage أو cookieCfg.enabled التكوينات، يمكنك إعادة تمكينها باستخدام setEnabled وظيفة كائن ICookieMgr.

تحل إدارة ملفات تعريف الارتباط المستندة إلى المثيل محل الوظائف العمومية السابقة ل CoreUtils و disableCookies()setCookie()getCookie()و و.deleteCookie()

للاستفادة من تحسينات اهتزاز الشجرة المقدمة في الإصدار 2.6.0، يوصى بعدم استخدام الوظائف العمومية بعد الآن.

ICookieMgrConfig هو تكوين ملف تعريف ارتباط لإدارة ملفات تعريف الارتباط المستندة إلى المثيل المضافة في 2.6.0. تسمح لك الخيارات المتوفرة بتمكين أو تعطيل استخدام ملفات تعريف الارتباط بواسطة SDK. يمكنك أيضا تعيين مجالات ومسارات ملفات تعريف الارتباط المخصصة وتخصيص الوظائف لجلب ملفات تعريف الارتباط وإعدادها وحذفها.

يتم تعريف خيارات ICookieMgrConfig في الجدول التالي.

اسم نوع الإعداد الافتراضي ‏‏الوصف
مُمكَّن منطقيه صحيح يستخدم المثيل الحالي ل SDK هذا المنطقي للإشارة إلى ما إذا كان استخدام ملفات تعريف الارتباط ممكنا أم لا. إذا كان خطأ، فإن مثيل SDK الذي تمت تهيئته بواسطة هذا التكوين لا يخزن أو يقرأ أي بيانات من ملفات تعريف الارتباط.
المجال سلسلة قيمة فارغة مجال ملفات تعريف الارتباط المخصص. من المفيد إذا كنت تريد مشاركة ملفات تعريف الارتباط Application Insights عبر المجالات الفرعية. إذا لم يتم توفيرها، فاستخدم القيمة الجذرية cookieDomain.
مسار سلسلة / تحديد المسار لاستخدام ملف تعريف الارتباط، إذا لم يتم توفيره، فإنه يستخدم أي قيمة من قيمة الجذر cookiePath .
تجاهل الحسابات سلسلة[] غير مُعرف حدد اسم (أسماء) ملفات تعريف الارتباط التي سيتم تجاهلها، مما يؤدي إلى عدم قراءة أو كتابة أي اسم ملف تعريف ارتباط مطابق. قد لا يزال يتم إزالتها أو حذفها بشكل صريح. لا تحتاج إلى تكرار الاسم في blockedCookies التكوين. (منذ الإصدار 2.8.8)
المجموعات المحظورة سلسلة[] غير مُعرف حدد اسم (أسماء) ملفات تعريف الارتباط التي لن تكتب أبدا. يمنع إنشاء أي اسم ملف تعريف ارتباط أو تحديثه، ولكن لا يزال من الممكن قراءته ما لم يتم تضمينه أيضا في ignoreCookies. قد لا يزال يتم إزالتها أو حذفها بشكل صريح. إذا لم يتم توفيره، تعيينه افتراضيا إلى نفس القائمة في ignoreCookies. (منذ الإصدار 2.8.8)
getCookie (name: string) => string قيمة فارغة دالة لإحضار قيمة ملف تعريف الارتباط المسماة، إذا لم يتم توفيرها، فإنها تستخدم تحليل ملف تعريف الارتباط الداخلي / التخزين المؤقت.
setCookie (name: string, value: string) => void قيمة فارغة دالة لتعيين ملف تعريف الارتباط المسمى بالقيمة المحددة، الذي يتم استدعاؤه فقط عند إضافة ملف تعريف ارتباط أو تحديثه.
delCookie (name: string, value: string) => void قيمة فارغة دالة لحذف ملف تعريف الارتباط المسمى مع القيمة المحددة، مفصولة عن setCookie لتجنب الحاجة إلى تحليل القيمة لتحديد ما إذا كان تتم إضافة ملف تعريف الارتباط أو إزالته. إذا لم يتم توفيره فإنه يستخدم تحليل ملفات تعريف الارتباط الداخلية / التخزين المؤقت.

مخطط المصدر

يساعدك دعم خريطة المصدر على تصحيح أخطاء تعليمة JavaScript البرمجية التي تم تصغيرها مع القدرة على توحيد مكامن الاستدعاء الملغومة لبيانات تتبع الاستخدام للاستثناء.

  • متوافق مع جميع عمليات التكامل الحالية في لوحة تفاصيل الاستثناء
  • يدعم جميع JavaScript SDKs الحالية والمستقبلية، بما في ذلك Node.JS، دون الحاجة إلى ترقية SDK

يدعم Application Insights تحميل خرائط المصدر إلى حاوية كائن ثنائي كبير الحجم لحساب Azure Storage. يمكنك استخدام خرائط المصدر لتوحيد مكدسات الاستدعاءات الموجودة في صفحة تفاصيل المعاملة من طرف إلى طرف. يمكنك أيضا استخدام خرائط المصدر لتوحيد أي استثناء تم إرساله بواسطة JavaScript SDK أو Node.js SDK.

لقطة شاشة توضح تحديد خيار توحيد مكدس الاستدعاءات عن طريق الارتباط بحساب تخزين.

إنشاء حساب تخزين جديد وحاوية كائن ثنائي كبير الحجم

إذا كان لديك بالفعل حساب تخزين موجود أو حاوية لكائن ثنائي كبير الحجم، يمكنك تخطي هذه الخطوة.

  1. إنشاء حساب تخزين جديد.

  2. إنشاء حاوية كائن ثنائي كبير الحجم داخل حساب التخزين. قم بتعيين مستوى الوصول العام إلى خاص للتأكد من أن خرائط المصدر الخاصة بك غير قابلة للوصول بشكل عام.

    لقطة شاشة توضح تعيين مستوى الوصول إلى الحاوية إلى خاص.

دفع خرائط المصدر إلى حاوية الكائن الثنائي كبير الحجم

دمج مسار النشر المستمر مع حساب التخزين الخاص بك عن طريق تكوينه لتحميل خرائط المصدر تلقائيا إلى حاوية blob المكونة.

يمكنك تحميل خرائط المصدر إلى حاوية Azure Blob Storage بنفس بنية المجلد التي تم تجميعها ونشرها معها. حالة الاستخدام الشائعة هي بادئة مجلد نشر بإصداره، على سبيل المثال، 1.2.3/static/js/main.js. عند التوحيد عبر حاوية كائن ثنائي كبير الحجم ل Azure تسمى sourcemaps، يحاول المسار إحضار خريطة مصدر موجودة في sourcemaps/1.2.3/static/js/main.js.map.

إذا كنت تستخدم Azure Pipelines لإنشاء تطبيقك ونشره باستمرار، أضف مهمة نسخ ملف Azure إلى البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك لتحميل خرائط المصدر تلقائيا.

لقطة شاشة توضح إضافة مهمة نسخ ملف Azure إلى البنية الأساسية لبرنامج ربط العمليات التجارية لتحميل خرائط المصدر إلى Azure Blob Storage.

تكوين مورد Application Insights باستخدام حساب تخزين خريطة المصدر

لديك خياران لتكوين مورد Application Insights الخاص بك باستخدام حساب تخزين خريطة المصدر.

علامة التبويب تفاصيل المعاملة من طرف إلى طرف

من علامة التبويب تفاصيل المعاملة من طرف إلى طرف، حدد توحيد. تكوين المورد الخاص بك إذا لم يتم تكوينه.

  1. في مدخل Microsoft Azure، اعرض تفاصيل استثناء تم تصغيره.
  2. تحديد تكبير.
  3. إذا لم يتم تكوين المورد الخاص بك، فكونه.
علامة تبويب الخصائص

لتكوين أو تغيير حساب التخزين أو حاوية الكائن الثنائي كبير الحجم المرتبطة بمورد Application Insights الخاص بك:

  1. انتقل إلى علامة التبويب Properties لمورد Application Insights.

  2. حدد Change source map Blob Container.

  3. حدد حاوية كائن ثنائي كبير الحجم مختلفة كحاوية خريطة المصدر.

  4. حدد تطبيق.

    لقطة شاشة تعرض إعادة تكوين حاوية Azure blob المحددة في جزء الخصائص.

عرض مخزن الاستدعاءات غير المنقوز

لعرض مكدس الاستدعاءات غير المحدد، حدد عنصر بيانات تتبع الاستخدام للاستثناء في مدخل Microsoft Azure، وابحث عن الخرائط المصدر التي تطابق مكدس الاستدعاءات، واسحب الخرائط المصدر وأفلتها في مكدس الاستدعاءات في مدخل Microsoft Azure. يجب أن يكون للمخطط المصدر نفس اسم الملف المصدر لإطار مكدس، ولكن مع ملحق map .

إذا واجهت مشكلات تتضمن دعم مخطط المصدر لتطبيقات JavaScript، فراجع استكشاف أخطاء دعم مخطط المصدر لتطبيقات JavaScript وإصلاحها.

رسم متحرك يوضح ميزة غير محددة.

اهتزاز الشجرة

يزيل اهتزاز الشجرة التعليمات البرمجية غير المستخدمة من حزمة JavaScript النهائية.

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

تحسينات وتوصيات تهز الشجرة

في الإصدار 2.6.0، قمنا بإيقاف الاستخدام الداخلي لفئات المساعد الثابتة هذه وإزالته لتحسين دعم الخوارزميات التي تهز الشجرة. يتيح لحزم npm إسقاط التعليمات البرمجية غير المستخدمة بأمان.

  • CoreUtils
  • EventHelper
  • Util
  • UrlHelper
  • DateTimeUtils
  • ConnectionStringParser

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

تم تغيير الفئات الثابتة إلى كائنات const التي تشير إلى الوظائف المصدرة الجديدة، ومن المخطط إجراء تغييرات مستقبلية لإعادة بناء التعليمات البرمجية للمراجع.

وظائف وبدائل مهملة تهز الشجرة

ينطبق هذا القسم عليك فقط إذا كنت تستخدم الدالات المهملة وتريد تحسين حجم الحزمة. نوصي باستخدام وظائف الاستبدال لتقليل الحجم ودعم جميع إصدارات Internet Explorer.

موجود استبدال
CoreUtils @microsoft/applicationinsights-core-js
CoreUtils._canUseCookies لا يوجد. لا تستخدم لأنها تتسبب في تضمين كافة مرجع CoreUtils في التعليمات البرمجية النهائية.
أعد بناء التعليمات البرمجية لمعالجة ملفات تعريف الارتباط لاستخدام appInsights.getCookieMgr().setEnabled(true/false) لتعيين القيمة والتحقق appInsights.getCookieMgr().isEnabled() من القيمة.
CoreUtils.isTypeof isTypeof
CoreUtils.isUndefined isUndefined
CoreUtils.isNullOrUndefined isNullOrUndefined
CoreUtils.hasOwnProperty hasOwnProperty
CoreUtils.isFunction isFunction
CoreUtils.isObject isObject
CoreUtils.isDate isDate
CoreUtils.isArray isArray
CoreUtils.isError isError
CoreUtils.isString isString
CoreUtils.isNumber رقم isNumber
CoreUtils.isBoolean isBoolean
CoreUtils.toISOString toISOString أو getISOString
CoreUtils.arrForEach arrForEach
CoreUtils.arrIndexOf arrIndexOf
CoreUtils.arrMap arrMap
CoreUtils.arrReduce arrReduce
CoreUtils.strTrim strTrim
CoreUtils.objCreate objCreateFn
CoreUtils.objKeys objKeys
CoreUtils.objDefineAccessors objDefineAccessors
CoreUtils.addEventHandler addEventHandler
CoreUtils.dateNow التاريخ الآن
CoreUtils.isIE isIE
CoreUtils.disableCookies disableCookies
يؤدي الرجوع إلى أي منهما إلى الإشارة إلى CoreUtils للتوافق مع الإصدارات السابقة.
إعادة بناء التعليمات البرمجية لمعالجة ملفات تعريف الارتباط لاستخدام appInsights.getCookieMgr().setEnabled(false)
CoreUtils.newGuid newGuid
CoreUtils.perfNow perfNow
CoreUtils.newId معرف جديد
CoreUtils.randomValue قيمة عشوائية
CoreUtils.random32 random32
CoreUtils.mwcRandomSeed mwcRandomSeed
CoreUtils.mwcRandom32 mwcRandom32
CoreUtils.generateW3CId generateW3CId
EventHelper @microsoft/applicationinsights-core-js
EventHelper.Attach حدث إرفاق
EventHelper.AttachEvent حدث إرفاق
EventHelper.Detach فصل الحدث
EventHelper.DetachEvent فصل الحدث
Util @microsoft/applicationinsights-common-js
Util.NotSpecified strNotSpecified
Util.createDomEvent createDomEvent
Util.disableStorage utlDisableStorage
Util.isInternalApplicationInsightsEndpoint isInternalApplicationInsightsEndpoint
Util.canUseLocalStorage utlCanUseLocalStorage
Util.getStorage utlGetLocalStorage
Util.setStorage utlSetLocalStorage
Util.removeStorage utlRemoveStorage
Util.canUseSessionStorage utlCanUseSessionStorage
Util.getSessionStorageKeys utlGetSessionStorageKeys
Util.getSessionStorage utlGetSessionStorage
Util.setSessionStorage utlSetSessionStorage
Util.removeSessionStorage utlRemoveSessionStorage
Util.disableCookies disableCookies
يؤدي الرجوع إلى أي منهما إلى الإشارة إلى CoreUtils للتوافق مع الإصدارات السابقة.
إعادة بناء التعليمات البرمجية لمعالجة ملفات تعريف الارتباط لاستخدام appInsights.getCookieMgr().setEnabled(false)
Util.canUseCookies canUseCookies
يؤدي الرجوع إلى أي منهما إلى الإشارة إلى CoreUtils للتوافق مع الإصدارات السابقة.
إعادة بناء التعليمات البرمجية لمعالجة ملفات تعريف الارتباط لاستخدام appInsights.getCookieMgr().isEnabled()
Util.disallowsSameSiteNone uaDisallowsSameSiteNone
Util.setCookie coreSetCookie
يؤدي الرجوع إلى الإشارة إلى CoreUtils للتوافق مع الإصدارات السابقة.
إعادة بناء التعليمات البرمجية لمعالجة ملفات تعريف الارتباط لاستخدام appInsights.getCookieMgr().set(name: string, value: string)
Util.stringToBoolOrDefault stringToBoolOrDefault
Util.getCookie coreGetCookie
يؤدي الرجوع إلى الإشارة إلى CoreUtils للتوافق مع الإصدارات السابقة.
إعادة بناء التعليمات البرمجية لمعالجة ملفات تعريف الارتباط لاستخدام appInsights.getCookieMgr().get(name: string)
Util.deleteCookie coreDeleteCookie
يؤدي الرجوع إلى الإشارة إلى CoreUtils للتوافق مع الإصدارات السابقة.
إعادة بناء التعليمات البرمجية لمعالجة ملفات تعريف الارتباط لاستخدام appInsights.getCookieMgr().del(name: string, path?: string)
Util.trim strTrim
Util.newId معرف جديد
Util.random32 ---
لا يوجد استبدال، أعد بناء التعليمات البرمجية الخاصة بك لاستخدام random32 الأساسية (صحيح)
Util.generateW3CId generateW3CId
Util.isArray isArray
Util.isError isError
Util.isDate isDate
Util.toISOStringForIE8 toISOString
Util.getIEVersion getIEVersion
Util.msToTimeSpan msToTimeSpan
Util.isCrossOriginError isCrossOriginError
Util.dump dumpObj
Util.getExceptionName getExceptionName
Util.addEventHandler حدث إرفاق
Util.IsBeaconApiSupported isBeaconApiSupported
Util.getExtension getExtensionByName
UrlHelper @microsoft/applicationinsights-common-js
UrlHelper.parseUrl urlParseUrl
UrlHelper.getAbsoluteUrl urlGetAbsoluteUrl
UrlHelper.getPathName urlGetPathName
UrlHelper.getCompeteUrl urlGetCompleteUrl
UrlHelper.parseHost urlParseHost
UrlHelper.parseFullHost urlParseFullHost
DateTimeUtils @microsoft/applicationinsights-common-js
DateTimeUtils.Now dateTimeUtilsNow
DateTimeUtils.GetDuration dateTimeUtilsDuration
ConnectionStringParser @microsoft/applicationinsights-common-js
ConnectionStringParser.parse parseConnectionString

إعلامات الخدمة

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

حاليا، لا يتم إرسال إعلامات نشطة.

تتم إدارة إعلامات الخدمة بواسطة JavaScript SDK، الذي يستقصي بانتظام ملف JSON عاما للتحكم في هذه الإعلامات وتحديثها. لتعطيل الاستقصاء الذي تم إجراؤه بواسطة JavaScript SDK، قم بتعطيل وضع featureOptIn.

استكشاف الأخطاء وإصلاحها

راجع «dedicated troubleshooting article».

الخطوات التالية