استكشاف المشاكل التي تُمكن تطبيق Application Insights Snapshot Debugger أو عرض لقطات وإصلاحها

إذا قمت بتمكين تطبيق Application Insights Snapshot Debugger للتطبيق الخاص بك، ولكن لا تظهر لقطات للاستثناءات، يمكنك استخدام هذه الإرشادات لاستكشاف الأخطاء وإصلاحها.

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

السيناريوهات غير المدعومة

يمكنك العثور أدناه على سيناريوهات حيث لا يتم دعم أداة تجميع اللقطات:

السيناريو التأثيرات الجانبية التوصية
عند استخدام Snapshot Collector SDK في تطبيقك مباشرةً (.csproj) وقمت بتمكين الخيار المتقدم "Interop". سيتم فقدان Application Insights SDK المحلي (بما في ذلك بيانات تتبع الاستخدام لأداة تجميع اللقطات)، وبالتالي لن تتوفر أي لقطات.
قد يتعطل تطبيقك عند بدء التشغيل باستخدام System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
لمزيدٍ من المعلومات بشأن ميزة Application Insights "Interop"، راجع الوثائق.
إذا كنت تستخدم الخيار المتقدم "Interop"، فاستخدم إضافة Snapshot Collector بدون تعليمات برمجية (ممكّن من خلال UX مدخل Microsoft Azure)

تأكد من استخدام نقطة نهاية Snapshot Debugger المناسبة

حاليا، يتم Azure Government المناطق الوحيدة التي تتطلب تعديلات نقطة النهاية ويتم تشغيل Microsoft Azure بواسطة 21Vianet.

بالنسبة إلى خدمة التطبيقات والتطبيقات التي تستخدم Application Insights SDK، يجب عليك تحديث سلسلة الاتصال باستخدام التجاوزات المدعومة لمصحح أخطاء اللقطات Snapshot Debugger كما هو موضح أدناه:

خاصية سلسلة الاتصال سحابة حكومة الولايات المتحدة سحابة الصين
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

لمزيدٍ من المعلومات حول تجاوزات الاتصال الأخرى، راجع وثائق Application Insights.

بالنسبة إلى تطبيق الوظائف، يجب عليك تحديث host.json باستخدام التجاوزات المدعومة أدناه:

الخاصية سحابة حكومة الولايات المتحدة سحابة الصين
AgentEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

فيما يلي مثال على host.json تم تحديثه من خلال نقطة نهاية عامل سحابة حكومة الولايات المتحدة:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      },
      "snapshotConfiguration": {
        "isEnabled": true,
        "agentEndpoint": "https://snapshot.monitor.azure.us"
      }
    }
  }
}

استخدام الفحص الصحي للقطة

العديد من المشاكل الشائعة بسبب Open Debug Snapshot لا تظهر. باستخدام إصدار Snapshot Collector قديم، على سبيل المثال؛ الوصول إلى حد التحميل اليومي؛ أو ربما تستغرق اللقطة وقتاً طويلاً للتحميل. استخدم "التحقق من صحة اللقطة" لاستكشاف المشاكل الشائعة وإصلاحها.

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

لقطة شاشة توضح كيفية إدخال فحص صحة لقطة.

تبحث الواجهة التفاعلية الشبيهة بالدردشة عن المشاكل الشائعة وتوجهك لإصلاحها.

لقطة شاشة تعرض نافذة فحص الحالة التفاعلية التي تسرد المشكلات والاقتراحات حول كيفية إصلاحها.

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

التحقق من مفتاح الأجهزة

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

ملاحظة

في 31 مارس 2025، سينتهي دعم استيعاب مفاتيح الأجهزة. سيستمر استيعاب مفتاح الأجهزة في العمل ولكننا لن نقوم بتوفير تحديثات أو أي دعم للميزة. الانتقال إلى سلاسل الاتصال للاستفادة من الإمكانات الجديدة.

التحقق من إعدادات عميل TLS/SSL (ASP.NET)

إذا كان لديك تطبيق ASP.NET الذي تتم استضافته في خدمة التطبيقات Azure App Service أو في IIS على جهاز ظاهري، فقد يفشل التطبيق الخاص بك بالاتصال بخدمة Snapshot Debugger بسبب بروتوكول أمان SSL مفقود.

تتطلب نقطة النهاية Snapshot Debugger إصدار TLS 1.2. تعد مجموعة بروتوكولات أمان SSL واحدة من المراوغات التي تم تمكينها بواسطة httpRuntime targetFramework القيمة الموجودة في system.web قسم web.config. إذا كان httpRuntime targetFramework هو 4.5.2 أو أقل، فلن يتم تضمين TLS 1.2 بشكل افتراضي.

ملاحظة

قيمة httpRuntime targetFramework مستقلة عن الإطار المستهدف المستخدم عند إنشاء التطبيق الخاص بك. للتحقق من الإعداد، افتح ملف web.config الخاص بك وابحث عن قسم system.web. تأكد من targetFramework لـ httpRuntime قد تم تعيينه إلى 4.6 أو أعلى.

<system.web>
   ...
   <httpRuntime targetFramework="4.7.2" />
   ...
</system.web>

ملاحظة

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

ملاحظة

إذا كان targetFramework هو 4.7 أو أعلى، يقوم Windows بتحديد البروتوكولات المتوفرة. في خدمة Azure App Service، يتوفر TLS 1.2. ومع ذلك، إذا كنت تستخدم الجهاز الظاهري الخاص بك، فقد تحتاج إلى تمكين TLS 1.2 في نظام التشغيل.

معاينة إصدارات .NET Core

إذا كنت تستخدم إصدار معاينة من .NET Core أو يشير مراجع التطبيق الخاص بك إلى التطبيق Application Insights SDK، بشكل مباشر أو غير مباشر عبر التجميع التابع، فتبع الإرشادات لتمكين Snapshot Debugger للبيئات الأخرى.

التحقق من صفحة الحالة الخاصة بملحق موقع خدمات التشخيص

إذا تم تمكين Snapshot Debugger من خلال جزء Application Insights في المدخل، فقد تم تمكينه من خلال ملحق موقع "خدمات التشخيص".

ملاحظة

التثبيت بلا تعليمة برمجية لـ Application Insights Snapshot Debugger يتبع نهج دعم NET. Core. للحصول على مزيدٍ من المعلومات حول أوقات التشغيل المعتمدة، راجع نهج دعم .NET Core. يمكنك التحقق من صفحة الحالة لهذا الملحق من خلال الانتقال إلى عنوان URL التالي: https://{site-name}.scm.azurewebsites.net/DiagnosticServices

ملاحظة

سيختلف نطاق ارتباط صفحة الحالة وفقاً للسحابة. سيكون هذا المجال هو نفس موقع إدارة Kudu لخدمة التطبيقات. تُظهر صفحة الحالة هذه حالة تثبيت عوامل Profiler وSnapshot Collector. إذا كان هناك خطأ غير متوقع، فسيتم عرضه وإظهار كيفية إصلاحه.

يمكنك استخدام موقع إدارة Kudu لخدمة التطبيقات للحصول على عنوان URL الأساسي لصفحة الحالة هذه:

  1. افتح تطبيق App Service في مدخل Azure.
  2. حدد أدوات متقدمة، أو ابحث عن Kudu.
  3. حدد Go.
  4. بمجرد أن تكون على موقع إدارة Kudu، في عنوان URL، إلحاق ما يلي /DiagnosticServicesواضغط على إدخال. سينتهي الأمر على هذا النحو: https://<kudu-url>/DiagnosticServices

الترقية إلى أحدث إصدار من حزمة NuGet

استناداً إلى كيفية تمكين Snapshot Debugger، راجع الخيارات التالية:

  • إذا تم تمكين Snapshot Debugger من خلال جزء Application Insights في المدخل، فيجب أن يكون التطبيق الخاص بك قيد التشغيل بالفعل لأحدث حزمة من NuGet.

  • إذا تم تمكين Snapshot Debugger عن طريق تضمين حزمة NuGet، Microsoft.ApplicationInsights.SnapshotCollector، فاستخدم مدير الحِزَم NuGet من Visual Studio للتأكد من استخدام أحدث إصدار من Microsoft.ApplicationInsights.SnapshotCollector.

للحصول على آخر التحديثات وإصلاح الأخطاء راجع ملاحظات الإصدار.

التحقق من سجلات المُحمِّل

بعد إنشاء لقطة، يتم إنشاء ملف مصغر (.dmp) على القرص. عملية تحميل منفصلة بإنشاء الملف المصغر هذا وتحميله، جنبا إلى جنب مع أي PDBs مقترنة، إلى السعة التخزينية Application Insights Snapshot Debugger. بعد تحميل الملف المصغر بنجاح، يتم حذفه من القرص. يتم الاحتفاظ بملفات السجل الخاصة بعملية التحميل على القرص. في بيئة خدمة التطبيقات، يمكنك العثور على هذه السجلات في D:\Home\LogFiles. استخدم موقع إدارة Kudu لخدمة App Service للعثور على ملفات السجل هذه.

  1. افتح تطبيق App Service في مدخل Azure.
  2. حدد أدوات متقدمة، أو ابحث عن Kudu.
  3. حدد Go.
  4. في مربع القائمة المنسدلة وحدة تحكم تتبع الأخطاء، حدد CMD.
  5. حدد LogFiles.

يجب أن تشاهد ملفاً واحداً على الأقل مع اسم يبدأ بملحق Uploader_ أو SnapshotUploader_ و.log. حدد الرمز المناسب لتنزيل أي ملفات سجل أو فتحها في المتصفح. يتضمن اسم الملف لاحقة فريدة تعرف مثيل خدمة التطبيق. إذا كان مثيل خدمة التطبيق الخاص بك مستضافاً على أكثر من جهاز، فهناك ملفات سجل منفصلة لكل جهاز. عندما يكشف المُحمِّل عن ملف مصغر جديد، يتم تسجيله في ملف السجل. وفيما يلي مثال على لقطة ناجحة وتحميلها:

SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
    DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp, 214.42 MB (uncompressed)
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp.
    DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
    DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
    DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:59.8530649Z

ملاحظة

المثال أعلاه مأخوذ من الإصدار 1.2.0 من Microsoft.ApplicationInsights.SnapshotCollector حزمة NuGet. في الإصدارات السابقة، تسمى عملية المُحمِّل بـ MinidumpUploader.exe والسجل أقل تفصيلاً. في المثال السابق، يكون مفتاح الأجهزة هو c12a605e73c44346a984e00000000000. يجب أن تتطابق هذه القيمة مع مفتاح الأجهزة للتطبيق الخاص بك. يتم إقران الملف المصغر مع لقطة باستخدام معرّف 139e411a23934dc0b9ea08a626db16c5. يمكنك استخدام هذا المعرف لاحقاً لتحديد موقع سجل الاستثناء المقترن في تطبيق Application Insights Analytics.

يقوم المُحمِّل بمسح PDBs الجديدة مرة واحدة كل 15 دقيقة تقريباً. وفيما يلي مثال على ذلك:

SnapshotUploader.exe Information: 0 : PDB rescan requested.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
    DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
    DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\6368.pdbscan
    DateTime=2018-03-09T01:47:19.4614027Z

بالنسبة للتطبيقات التي لم تتم استضافتها في خدمة التطبيق، فإن سجلات المُحمِّل موجودة في نفس المجلد مثل المجلدات المصغرة: %TEMP%\Dumps\<ikey> (حيث إن <ikey> هو مفتاح الأجهزة الخاص بك).

استكشاف أخطاء الخدمات السحابية وإصلاحها

في الخدمات السحابية، قد يكون مجلد المؤقت الافتراضي صغيراً جداً بحيث لا يمكنه الاحتفاظ بالملفات المصغرة ما يؤدي إلى فقد اللقطات.

تعتمد المساحة المطلوبة على مجموعة العمل الإجمالية للتطبيق وعدد اللقطات المتزامنة.

مجموعة العمل لدور ويب ASP.NET 32 بت عادةً ما تكون بين 200 ميجابايت و500 ميجابايت. السماح لاثنين من اللقطات المتزامنة على الأقل.

على سبيل المثال، إذا كان التطبيق يستخدم 1 جيجابايت من مجموعة العمل الإجمالية، يجب التأكد من وجود مساحة قرص لا تقل عن 2 جيجابايت لتخزين اللقطات.

اتبع هذه الخطوات لتكوين دور الخدمة السحابية الخاص بك مع مورد محلي مخصص للقطات.

  1. إضافة مورد محلي جديد إلى "الخدمة السحابية" الخاصة بك عن طريق تحرير ملف تعريف الخدمة السحابية (.csdef). يعرف المثال التالي مورد يسمى SnapshotStore بحجم 5 جيجابايت.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. تعديل التعليمات البرمجية لبدء التشغيل دورك لإضافة متغير بيئة يُشير إلى المورد المحلي SnapshotStore. بالنسبة لأدوار العاملين، يجب إضافة التعليمات البرمجية إلى أسلوب دورك OnStart:

    public override bool OnStart()
    {
        Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
        return base.OnStart();
    }
    

    بالنسبة لأدوار ويب (ASP.NET)، يجب إضافة التعليمات البرمجية إلى أسلوب تطبيق الويب Application_Start الخاص بك:

    using Microsoft.WindowsAzure.ServiceRuntime;
    using System;
    namespace MyWebRoleApp
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
           protected void Application_Start()
           {
              Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath);
              // TODO: The rest of your application startup code
           }
        }
    }
    
  3. تحديث ملف الدور الخاص بك ApplicationInsights.config لتجاوز موقع المجلد المؤقت المستخدم من قِبل SnapshotCollector

    <TelemetryProcessors>
     <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
       <!-- Use the SnapshotStore local resource for snapshots -->
       <TempFolder>%SNAPSHOTSTORE%</TempFolder>
       <!-- Other SnapshotCollector configuration options -->
     </Add>
    </TelemetryProcessors>
    

تجاوز مجلد النسخة المطابقة

عند بدء تشغيل Snapshot Collector، يحاول العثور على مجلد على القرص مناسب لتشغيل عملية مُحمِّل اللقطات. يُعرف المجلد المختار باسم مجلد "النسخة المطابقة".

يتحقق Snapshot Collector من بعض المواقع المعروفة، مع التأكد من أن لديه أذونات لنسخ ثنائيات مُحمِّل اللقطات. يتم استخدام متغيرات البيئة التالية:

  • Fabric_Folder_App_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

إذا تعذر العثور على مجلد مناسب، فإن Snapshot Collector يبلغ عن خطأ بعبارة "تعذر العثور على مجلد نسخة مطابقة مناسب".

إذا فشلت النسخة، يقوم Snapshot Collector بالإبلاغ عن خطأ ShadowCopyFailed.

إذا تعذر تشغيل المُحمِّل، يقوم Snapshot Collector بالإبلاغ عن خطأ UploaderCannotStartFromShadowCopy. غالبا ما يحتوي نص الرسالة على System.UnauthorizedAccessException. يحدث هذا الخطأ عادةً لأن التطبيق قيد التشغيل بموجب حساب باستخدام أذونات مخفضة. الحساب لديه إذن للكتابة إلى مجلد النسخة المطابقة، ولكن ليس لديه إذن لتنفيذ التعليمات البرمجية.

نظرًا لأن هذه الأخطاء تحدث عادةً أثناء بدء التشغيل، فسيتبعها عادةً ExceptionDuringConnect خطأ فشل المُحمِّل في البدء."

للتغلب على هذه الأخطاء، يمكنك تحديد مجلد النسخة المطابقة يدوياً من خلال خيار التكوين ShadowCopyFolder. على سبيل المثال، باستخدام ApplicationInsights.config:

<TelemetryProcessors>
 <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
   <!-- Override the default shadow copy folder. -->
   <ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
   <!-- Other SnapshotCollector configuration options -->
 </Add>
</TelemetryProcessors>

أو، إذا كنت تستخدم appsettings.json مع تطبيق .NET Core:

{
  "ApplicationInsights": {
    "InstrumentationKey": "<your instrumentation key>"
  },
  "SnapshotCollectorConfiguration": {
    "ShadowCopyFolder": "D:\\SnapshotUploader"
  }
}

استخدام بحث التطبيق Application Insights للعثور على استثناءات مع لقطات

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

  1. استعرض للوصول إلى مورد Application Insights في مدخل Azure.
  2. حدد بحث.
  3. اكتب ai.snapshot.id في مربع نص البحث واضغط على Enter .

لقطة شاشة تعرض البحث عن بيانات تتبع الاستخدام باستخدام معرف لقطة في المدخل.

إذا لم يقم هذا البحث بإرجاع أي نتائج، ثم، لم يتم الإبلاغ عن أي لقطات إلى التطبيق Application Insights في النطاق الزمني المحدد.

للبحث عن معرف لقطة محددة من سجلات المُحمِّل، اكتب هذا المعرف في مربع بحث. إذا لم تتمكن من العثور على سجلات للقطة تعرف أنه تم تحميلها، فاتبع الخطوات التالية:

  1. تحقق مرة أخرى من أنك تبحث في مورد Application Insights الصحيح عن طريق التحقق من مفتاح الأجهزة.

  2. باستخدام الطابع الزمني من سجل المُحمِّل، قم بضبط عامل تصفية نطاق الوقت للبحث لتغطية هذا النطاق الزمني.

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

تحرير وكيل الشبكة أو قواعد جدار الحماية

إذا كان التطبيق الخاص بك يتصل بالإنترنت عبر وكيل أو جدار حماية، فقد تحتاج إلى تحديث القواعد للاتصال بخدمة محلل ملفات التعريف Snapshot Debugger.

يتم تضمين عناوين IP المستخدمة من قِبل Application Insights Snapshot Debugger في علامة خدمة Azure Monitor. للحصول على مزيد من المعلومات، راجع علامات خدمة الوثائق.

هل هناك أي تكاليف فوترة عند استخدام اللقطات؟

لا توجد رسوم مقابل اشتراكك الخاص ب Snapshot Debugger. يتم تخزين ملفات اللقطات التي تم جمعها بشكل منفصل عن بيانات تتبع الاستخدام التي تم جمعها بواسطة Application Insights SDKs ولا توجد رسوم لاستيعاب اللقطة أو تخزينها.