مقدمة إلى EventCounters

تُعد EventCounter آلية ‎.NET/.NET Core لنشر واستهلاك العدادات أو الإحصاءات. يتم دعم EventCounters في جميع الأنظمة الأساسية لنظام التشغيل - Windows، وLinux، وmacOS. يمكن اعتبار أنه مكافئ عبر الأنظمة الأساسية لـ PerformanceCounters المعتمد فقط في أنظمة Windows.

بينما يمكن للمستخدمين نشر أي مخصص EventCounters لتلبية احتياجاتهم، ينشر .NET مجموعة من هذه العدادات بشكل افتراضي. يستعرض هذا المستند الخطوات المطلوبة لجمع وعرض EventCounters (تعريف النظام أو تعريف المستخدم) في Azure Application Insights.

إشعار

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

استخدام Application Insights لجمع EventCounters

يدعم Application Insights جمع EventCounters مع EventCounterCollectionModule الخاصة به، ما يًُعد جزءًا من حزمة NuGet الصادرة حديثًا Microsoft.ApplicationInsights.EventCounterCollector. يتم تمكين EventCounterCollectionModule تلقائيًا عند استخدام AspNetCore أو WorkerService. EventCounterCollectionModule يجمع عدادات ذات تكرار مجموعة غير قابل للتكوين يبلغ 60 ثانية. لا توجد أذونات خاصة مطلوبة لجمع EventCounters. بالنسبة ASP.NET Core applications، تريد أيضا إضافة حزمة Microsoft.ApplicationInsights.AspNetCore .

dotnet add package Microsoft.ApplicationInsights.EventCounterCollector
dotnet add package Microsoft.ApplicationInsights.AspNetCore

العدادات الافتراضية التي تم جمعها

بدءا من الإصدار 2.15.0 من AspNetCore SDK أو WorkerService SDK، لا يتم جمع أي عدّادات بشكل افتراضي. يتم تمكين الوحدة نفسها، بحيث يمكن للمستخدمين إضافة العدادات المطلوبة لجمعها.

للحصول على قائمة من العدّادات المعروفة التي تم نشرها بواسطة وقت تشغيل ‎.NET، راجع مستند Available Counters.

تخصيص العدّادات ليتم جمعها

يوضح المثال التالي كيفية إضافة/إزالة العدّادات. سيتم إجراء هذا التخصيص كجزء من تكوين خدمة التطبيق بعد تمكين مجموعة بيانات تتبع الاستخدام ل Application Insights باستخدام إما AddApplicationInsightsTelemetry() أو AddApplicationInsightsWorkerService(). فيما يلي مثال على تعليمات برمجية من تطبيق ASP.NET Core. بالنسبة لنوع آخر من التطبيقات، راجع هذا المستند.

using Microsoft.ApplicationInsights.Extensibility.EventCounterCollector;
using Microsoft.Extensions.DependencyInjection;

builder.Services.ConfigureTelemetryModule<EventCounterCollectionModule>(
        (module, o) =>
        {
            // Removes all default counters, if any.
            module.Counters.Clear();

            // Adds a user defined counter "MyCounter" from EventSource named "MyEventSource"
            module.Counters.Add(
                new EventCounterCollectionRequest("MyEventSource", "MyCounter"));

            // Adds the system counter "gen-0-size" from "System.Runtime"
            module.Counters.Add(
                new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
        }
    );

تعطيل وحدة جمع EventCounter النمطية

يمكن تعطيل EventCounterCollectionModule باستخدام ApplicationInsightsServiceOptions.

يستخدم المثال التالي ASP.NET Core SDK.

using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;

var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);

يمكن استخدام نهج مشابه ل WorkerService SDK أيضا، ولكن يجب تغيير مساحة الاسم كما هو موضح في المثال التالي.

using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;

var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);

عدادات الأحداث في مستكشف القياس

لعرض قياسات EventCounter في مستكشف القياس، حدد مورد Application Insights، واختر القياسات المستندة إلى السجل كمساحة اسم للقياس. ثم يتم عرض قياسات EventCounter ضمن الفئة المخصصة.

Event counters reported in Application Insights Metric Explorer

عدادات الأحداث في Analytics

يمكنك أيضًا البحث عن تقارير عدادات الأحداث وعرضها في Analytics، في الجدول customMetrics.

على سبيل المثال، قم بتشغيل الاستعلام التالي لمعرفة ما العدادات التي يتم تجميعها والمتاحة للاستعلام عنها:

customMetrics | summarize avg(value) by name

Event counters reported in Application Insights Analytics

للحصول على مخطط عداد معين (على سبيل المثال: ThreadPool Completed Work Item Count) خلال الفترة الأخيرة، قم بتشغيل الاستعلام التالي.

customMetrics 
| where name contains "System.Runtime|ThreadPool Completed Work Item Count"
| where timestamp >= ago(1h)
| summarize  avg(value) by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart

Chat of a single counter in Application Insights

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

التنبيهات

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

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

هل يمكنني رؤية EventCounters في القياسات المباشرة؟

لا تعرض المقاييس المباشرة EventCounters اعتبارا من اليوم. استخدم مستكشف القياسات أو Analytics للاطلاع على بيانات تتبع الاستخدام.

لقد قمت بتمكين Application Insights من مدخل Azure Web App. لماذا لا يمكنني رؤية EventCounters؟

لا يدعم ملحق Application Insights لـ ASP.NET Core هذه الميزة حتى الآن.

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