Sdílet prostřednictvím


Úvod do služby EventCounters

EventCounter je mechanismus .NET/.NET Core pro publikování a využívání čítačů nebo statistik. Funkce EventCounters se podporují na všech platformách operačního systému – Windows, Linux a macOS. Lze si představit jako ekvivalent pro různé platformy pro PerformanceCounters , které jsou podporovány pouze v systémech Windows.

I když uživatelé můžou publikovat libovolné vlastní, EventCounters aby vyhovovaly jejich potřebám, .NET ve výchozím nastavení publikuje sadu těchto čítačů. Tento dokument vás provede kroky potřebnými ke shromažďování a zobrazení EventCounters (definovaných systémem nebo uživatelem definovaných) v Aplikace Azure lication Insights.

Poznámka:

Následující dokumentace spoléhá na klasické rozhraní API Application Insights. Dlouhodobým plánem application Insights je shromažďovat data pomocí OpenTelemetry. Další informace najdete v tématu Povolení OpenTelemetry služby Azure Monitor pro aplikace .NET, Node.js, Python a Java a náš plán OpenTelemetry. Pokyny k migraci jsou k dispozici pro .NET, Node.js a Python.

Shromažďování objektů EventCounters pomocí Application Insights

Application Insights podporuje shromažďování EventCounters s jeho EventCounterCollectionModule, což je součást nově vydaného balíčku NuGet Microsoft.ApplicationInsights.EventCounterCollector. EventCounterCollectionModule je automaticky povolena při použití AspNetCore nebo WorkerService. EventCounterCollectionModule shromažďuje čítače s nekonfigurovatelnou frekvencí shromažďování 60 sekund. Ke shromažďování objektů EventCounters nejsou nutná žádná zvláštní oprávnění. Pro aplikace ASP.NET Core také chcete přidat balíček Microsoft.ApplicationInsights.AspNetCore .

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

Shromažďované výchozí čítače

Od verze 2.15.0 sady AspNetCore SDK nebo sady WorkerService SDK se ve výchozím nastavení neshromažďují žádné čítače. Samotný modul je povolený, takže uživatelé můžou přidat požadované čítače, které je budou shromažďovat.

Seznam známých čítačů publikovaných modulem runtime .NET získáte v dokumentu Dostupné čítače .

Přizpůsobení čítačů, které se mají shromažďovat

Následující příklad ukazuje, jak přidat nebo odebrat čítače. Toto přizpůsobení by bylo provedeno jako součást konfigurace aplikační služby po povolení shromažďování telemetrie Application Insights pomocí nebo AddApplicationInsightsTelemetry() AddApplicationInsightsWorkerService(). Následuje příklad kódu z aplikace ASP.NET Core. Další typy aplikací najdete v tomto dokumentu.

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"));
        }
    );

Zakázání modulu kolekce EventCounter

EventCounterCollectionModulelze zakázat pomocí .ApplicationInsightsServiceOptions

Následující příklad používá sadu ASP.NET Core SDK.

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

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

Podobný přístup je možné použít i pro sadu WorkerService SDK, ale obor názvů se musí změnit, jak je znázorněno v následujícím příkladu.

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

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

Čítače událostí v Průzkumníku metrik

Pokud chcete zobrazit metriky EventCounteru v Průzkumníku metrik, vyberte prostředek Application Insights a jako obor názvů metrik zvolte metriky založené na protokolu. Pak se metriky EventCounter zobrazí v kategorii Vlastní.

Čítače událostí hlášené v Průzkumníku metrik Application Insights

Čítače událostí v Analytics

Sestavy čítačů událostí můžete také prohledávat a zobrazovat v analýze v tabulce customMetrics.

Spuštěním následujícího dotazu můžete například zjistit, jaké čítače se shromažďují a k dispozici pro dotazování:

customMetrics | summarize avg(value) by name

Čítače událostí hlášené v Analýzách Application Insights

Pokud chcete získat graf určitého čítače (například: ThreadPool Completed Work Item Count) za poslední období, spusťte následující dotaz.

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 jednoho čítače v Application Insights

Stejně jako jiná telemetrie má customMetrics také sloupec cloud_RoleInstance , který označuje identitu instance hostitelského serveru, na které je vaše aplikace spuštěná. Výše uvedený dotaz zobrazuje hodnotu čítače pro každou instanci a dá se použít k porovnání výkonu různých instancí serveru.

Výstrahy

Stejně jako u jiných metrik můžete nastavit upozornění , které vás upozorní, pokud čítač události překročí vámi zadaný limit. Otevřete podokno Upozornění a vyberte Přidat výstrahu.

Nejčastější dotazy

Můžu zobrazit EventCounters v živých metrikách?

Živé metriky dnes nezobrazují EventCounters. K zobrazení telemetrie použijte Průzkumník metrik nebo Analytics.

Povolil(a) jsem Application Insights z webu Azure Web App Portal. Proč nevidím EventCounters?

Rozšíření Application Insights pro ASP.NET Core tuto funkci zatím nepodporuje.

Další kroky