مشاركة عبر


عدادات ل .NET في Application Insights

يدعم Azure MonitorApplication Insights عدادات الأداء وعدادات الأحداث. يوفر هذا الدليل نظرة عامة على كليهما، بما في ذلك الغرض منهما وتكوينهما واستخدامهما في تطبيقات .NET.

تنبيه

نوصي ب Azure Monitor OpenTelemetry Distro للتطبيقات الجديدة أو العملاء لتشغيل Azure Monitor Application Insights. يوفر Azure Monitor OpenTelemetry Distro وظيفة وتجربة مماثلة ل Application Insights SDK. من الممكن الترحيل من Application Insights SDK باستخدام أدلة الترحيل ل .NET Node.js وPython، ولكننا ما زلنا نعمل على إضافة بعض الميزات الإضافية للتوافق مع الإصدارات السابقة.

نظرة عامة

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

تكوين العدادات

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

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

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

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

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

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

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

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

  • %العملية/وقت المُعالج
  • %العملية/وقت المُعالج العادي
  • الذاكرة/عدد وحدات البايت المتاحة
  • طلبات ASP.NET/ثانية
  • استثناءات وقت تشغيل اللغة الشائعة (CLR) ل .NET التي تم طرحها / ثانية
  • وقت تنفيذ 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();

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

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

عدادات الأداء للتطبيقات التي تعمل في 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)، استخدم عدادات الأحداث.

استفسارات Log Analytics

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

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

performanceCounters | summarize count(), avg(value) by category, instance, counter

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

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

performanceCounters | where counter == "Available Bytes" | summarize avg(value), min(value) by bin(timestamp, 1h) | render timechart

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

performanceCounters | where counter == "% Processor Time" and instance == "SendMetrics" | summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1d)

التنبيهات

مثل المقاييس الأخرى، يمكنك تعيين تنبيه للتحذير إذا كان العداد يخرج عن الحد المحدد.

لتعيين تنبيه، افتح جزء التنبيهات وحدد إضافة تنبيه.

الأسئلة الشائعة

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

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