عدّادات أداء النظام في Application Insights

يوفر Windows مجموعة متنوعة من عدادات الأداء، مثل تلك المستخدمة لجمع إحصائيات المعالج والذاكرة واستخدام القرص. يمكنك أيضWا تحديد عدّادات الأداء لديك.

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

إشعار

تعتمد الوثائق التالية على واجهة برمجة تطبيقات Application Insights الكلاسيكية. الخطة طويلة الأجل ل Application Insights هي جمع البيانات باستخدام OpenTelemetry. لمزيد من المعلومات، راجع تمكين Azure Monitor OpenTelemetry لتطبيقات .NET Node.js وPython وJava.

المتطلبات الأساسية

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

net localgroup "Performance Monitor Users" /add "IIS APPPOOL\NameOfYourPool"

عرض العدّادات

يعرض جزء Metrics المجموعة الافتراضية من عدادات الأداء.

Screenshot that shows performance counters reported in Application Insights.

العدادات الافتراضية الحالية لتطبيقات الويب ASP.NET:

  • %العملية/وقت المُعالج
  • %العملية/وقت المُعالج العادي
  • الذاكرة/عدد وحدات البايت المتاحة
  • طلبات ASP.NET/ثانية
  • استثناءات .NET CLR التي تم طرحها / ثانية
  • وقت تنفيذ ASP.NET ApplicationsRequest
  • العملية/وحدات البايت الخاصة
  • العملية/وحدات البايت للبيانات/ثانية
  • تطبيقات ASP.NET/الطلبات في قائمة انتظار التطبيق
  • المُعالج(_الإجمالي)/%وقت المُعالج

العدادات الافتراضية الحالية التي تم جمعها لتطبيقات الويب الأساسية ASP.NET:

  • %العملية/وقت المُعالج
  • %العملية/وقت المُعالج العادي
  • الذاكرة/عدد وحدات البايت المتاحة
  • العملية/وحدات البايت الخاصة
  • العملية/وحدات البايت للبيانات/ثانية
  • المُعالج(_الإجمالي)/%وقت المُعالج

إضافة عدّادات

إذا لم يتم تضمين عدّاد الأداء الذي تريده في قائمة المقاييس، يمكنك إضافته.

  1. تعرّف على العدّادات المتوفرة في الخادم لديك باستخدام أمر PowerShell هذا على الخادم المحلي:

    Get-Counter -ListSet *
    

    لمزيد من المعلومات، راجع Get-Counter.

  2. افتح ApplicationInsights.config.

    في حال أضفت Application Insights إلى تطبيقك أثناء التطوير:

    1. حرر ApplicationInsights.config في مشروعك.
    2. أعد توزيعه إلى خوادمك.
  3. تحرير توجيه مجمّع الأداء:

    
        <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">
          <Counters>
            <Add PerformanceCounter="\Objects\Processes"/>
            <Add PerformanceCounter="\Sales(photo)\# Items Sold" ReportAs="Photo sales"/>
          </Counters>
        </Add>
    

إشعار

ASP.NET لا تحتوي ApplicationInsights.configالتطبيقات الأساسية على ، لذلك الأسلوب السابق غير صالح لتطبيقات ASP.NET Core.

بإمكانك التقاط كل من العدّادات القياسية وتلك التي نفذتها بنفسك. \Objects\Processes هو مثال على عداد قياسي متوفر على جميع أنظمة Windows. \Sales(photo)\# Items Sold هو مثال على عدّاد مخصص يمكن تنفيذه في خدمة ويب.

التنسيق هو \Category(instance)\Counter، أو للفئات التي ليس لها مثيلات، فقط \Category\Counter.

ReportAs المعلمة مطلوبة لأسماء العدادات التي لا تتطابق مع [a-zA-Z()/-_ \.]+. أي أنها تحتوي على أحرف غير موجودة في المجموعات التالية: الأحرف والأقواس المستديرة والشرطة المائلة للأمام والواصلة والتسطير السفلي والمسافة والنقطة.

إذا حددت مثيلا، فسيتم جمعه كبعد CounterInstanceName للمقياس الذي تم الإبلاغ عنه.

جمع عدادات الأداء في التعليمات البرمجية لتطبيقات الويب ASP.NET أو تطبيقات وحدة تحكم .NET/.NET Core

لتجميع عدادات أداء النظام وإرسالها إلى Application Insights، يمكنك تكييف القصاصة البرمجية التالية:

    var perfCollectorModule = new PerformanceCollectorModule();
    perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
      @"\Process([replace-with-application-process-name])\Page Faults/sec", "PageFaultsPerfSec"));
    perfCollectorModule.Initialize(TelemetryConfiguration.Active);

أو يمكنك القيام بنفس الشيء باستخدام المقاييس المخصصة التي قمت بإنشائها:

    var perfCollectorModule = new PerformanceCollectorModule();
    perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
      @"\Sales(photo)\# Items Sold", "Photo sales"));
    perfCollectorModule.Initialize(TelemetryConfiguration.Active);

جمع عدادات الأداء في التعليمات البرمجية لتطبيقات الويب الأساسية ASP.NET

قم بتكوين PerformanceCollectorModule بعد الأسلوب في WebApplication.CreateBuilder()Program.cs:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

// The following configures PerformanceCollectorModule.

builder.Services.ConfigureTelemetryModule<PerformanceCollectorModule>((module, o) =>
    {
        // The application process name could be "dotnet" for ASP.NET Core self-hosted applications.
        module.Counters.Add(new PerformanceCounterCollectionRequest(@"\Process([replace-with-application-process-name])\Page Faults/sec", "DotnetPageFaultsPerfSec"));
    });

var app = builder.Build();

عدادات الأداء في Log Analytics

يمكنك البحث عن تقارير عداد الأداء وعرضها في Log Analytics.

يعرض مخطط performanceCounterscategoryواسم counter واسم instance لكل عدّاد أداء. في بيانات تتبع الاستخدام لكل تطبيق، سترى فقط العدّادات الخاصة بهذا التطبيق. على سبيل المثال، لمعرفة العدّادات المتوفرة:

Screenshot that shows performance counters in Application Insights analytics.

هنا، Instance يشير إلى مثيل عداد الأداء، وليس الدور أو مثيل جهاز الخادم. عادة ما يقوم اسم مثيل عداد الأداء بتقسيم العدادات، مثل وقت المعالج، حسب اسم العملية أو التطبيق.

للحصول على مخطط الذاكرة المتوفرة خلال الفترة الأخيرة:

Screenshot that shows a memory time chart in Application Insights analytics.

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

Screenshot that shows performance segmented by role instance in Application Insights analytics.

عدّادات ASP.NET وApplication Insights

تناقش الأقسام التالية عدد ASP.NET وApplication Insights.

ما الفرق بين مقاييس معدل الاستثناءات والاستثناءات؟

  • Exception rate: معدل الاستثناء هو عداد أداء النظام. تحسب الدالة CLR جميع الاستثناءات التي تمت معالجتها وغير المعالجة التي يتم طرحها وتقسم الإجمالي في فاصل أخذ العينات على طول الفاصل الزمني. تجمع Application Insights SDK هذه النتيجة وترسلها إلى المدخل.
  • Exceptions: مقياس الاستثناءات هو عدد التقارير التي TrackException يتلقاها المدخل في الفاصل الزمني لأخذ العينات من المخطط. يتضمن فقط الاستثناءات التي تمت معالجتها حيث قمت بكتابة TrackException المكالمات في التعليمات البرمجية الخاصة بك. لا يتضمن جميع الاستثناءات غير المعالجة.

عدادات الأداء للتطبيقات التي تعمل في Azure Web Apps وحاويات Windows على Azure App Service

يتم تشغيل تطبيقات كلّ من ASP.NET وASP.NET Core التي تم نشرها في Azure Web Apps في بيئة آلية خاصة. يمكن للتطبيقات الموزّعة في Azure App Service الاستفادة من Windows Container أو استضافتها في بيئة الاختبار المعزولة. إذا تم نشر التطبيق في حاوية Windows، تتوفر جميع عدادات الأداء القياسية في صورة الحاوية.

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

يكتشف Application Insights SDK ل ASP.NET و ASP.NET Core ما إذا تم نشر التعليمات البرمجية إلى تطبيق ويب أو حاوية غير Windows. يحدد الكشف ما إذا كان يجمع عدادات الأداء في بيئة الاختبار المعزولة أو يستخدم آلية التجميع القياسية عند استضافته على حاوية Windows أو جهاز ظاهري.

عدّادات الأداء في تطبيقات ASP.NET Core

دعم عدادات الأداء في ASP.NET Core محدود:

  • تجمع إصدارات 2.4.1 SDK والإصدارات الأحدث عدّادات الأداء إذا كان التطبيق قيد التشغيل في Azure Web Apps (Windows).
  • تجمع إصدارات SDK 2.7.1 والإصدارات الأحدث عدّادات الأداء إذا كان التطبيق قيد التشغيل في Windows ويستهدف NETSTANDARD2.0 أو إصدارات أحدث.
  • بالنسبة للتطبيقات التي تستهدف .NET Framework، تدعم جميع إصدارات SDK عدادات الأداء.
  • تدعم إصدارات SDK 2.8.0 والإصدارات الأحدث عداد وحدة المعالجة المركزية/الذاكرة في Linux. لا يوجد عدّاد آخر مدعوم في Linux. للحصول على عدادات النظام في Linux (والبيئات الأخرى غير Windows)، استخدم EventCounters.

التنبيهات

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

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