Úvod ke službě 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, Linuxu a macOS. Je možné si ho představit jako ekvivalent multiplatformního výkonu pro PerformanceCounters, který je podporován pouze v Windows systémech.

I když uživatelé můžou publikovat libovolné vlastní, EventCounters aby vyhovovaly svým potřebám, .NET Core 3.0 a vyšší modul runtime ve výchozím nastavení publikuje sadu těchto čítačů. Tento dokument vás provede postupem potřebným ke shromažďování a zobrazení EventCounters (definovaných systémem nebo uživatelem) v Aplikace Azure Přehledy.

Shromažďování objektů EventCounters pomocí Přehledy aplikace

Aplikace Přehledy podporuje shromažďování EventCounters s jeho EventCounterCollectionModule, která je součástí nově vydaného balíčku NuGet Microsoft.ApplicationInsights.EventCounterCollector. EventCounterCollectionModule je automaticky povolen při použití AspNetCore nebo WorkerService. EventCounterCollectionModule shromažďuje čítače s nekonfigurovatelným intervalem shromažďování 60 sekund. Ke shromažďování objektů EventCounters nejsou nutná žádná zvláštní oprávnění.

Shromážděné 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 jednoduše 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 se provádělo v ConfigureServices metodě vaší aplikace po povolení shromažďování telemetrických dat aplikace Přehledy pomocí jedné AddApplicationInsightsTelemetry() nebo AddApplicationInsightsWorkerService(). Následuje příklad kódu z ASP.NET Core aplikace. Další typy aplikací najdete v tomto dokumentu.

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

    public void ConfigureServices(IServiceCollection services)
    {
        //... other code...

        // The following code shows how to configure the module to collect
        // additional counters.
        services.ConfigureTelemetryModule<EventCounterCollectionModule>(
            (module, o) =>
            {
                // This removes all default counters, if any.
                module.Counters.Clear();

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

                // This 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

EventCounterCollectionModule lze zakázat pomocí ApplicationInsightsServiceOptions. Příklad použití sady ASP.NET Core SDK je uvedený níže.

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

    public void ConfigureServices(IServiceCollection services)
    {
        //... other code...

        var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
        applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
        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.WorkerService;
    using Microsoft.Extensions.DependencyInjection;

    var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
    applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
    services.AddApplicationInsightsTelemetryWorkerService(applicationInsightsServiceOptions);

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

Pokud chcete zobrazit metriky EventCounter v Průzkumníku metrik, vyberte prostředek Přehledy aplikace a jako obor názvů metrik zvolte metriky založené na protokolu. Pak se metriky EventCounter zobrazí v rámci vlastní kategorie.

Event counters reported in Application Insights Metric Explorer

Čítače událostí v Analytics

Sestavy čítačů událostí můžete také vyhledá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

Event counters reported in Application Insights Analytics

Pokud chcete získat graf konkrétní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 of a single counter in Application Insights

Podobně 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 na instanci a lze ji 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álostí překročí vámi zadaný limit. Otevřete podokno Výstrahy a klikněte na Přidat výstrahu.

Nejčastější dotazy

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

Živé metriky nezobrazují služby EventCounters od dnešního dne. K zobrazení telemetrie použijte Průzkumník metrik nebo Analytics.

Povolil(a) jsem Přehledy aplikace z webu Azure Web App Portal. Ale nevidím EventCounters??

Rozšíření Přehledy aplikace pro ASP.NET Core tuto funkci zatím nepodporuje. Tento dokument se aktualizuje, když je tato funkce podporovaná.

Další kroky