Úvod do EventCountersEventCounters introduction

EventCounter je základní mechanismus .NET/.NET pro publikování a používání čítačů nebo statistik.EventCounter is .NET/.NET Core mechanism to publish and consume counters or statistics. Tento dokument obsahuje přehled EventCounters a příklady, jak je publikovat a využívat.This document gives an overview of EventCounters and examples on how to publish and consume them. EventCounters jsou podporované na všech platformách OS – Windows, Linux a macOS.EventCounters are supported in all OS platforms - Windows, Linux, and macOS. Můžeme si představit jako ekvivalent pro čítače výkonu pro různé platformy, který je podporován pouze v systémech Windows.It can be thought of as a cross-platform equivalent for the PerformanceCounters that is only supported in Windows systems.

I když uživatelé mohou publikovat jakékoli vlastní EventCounters , aby splnili požadavky, .NET Core 3,0 a vyšší běhový modul zveřejňuje ve výchozím nastavení sadu těchto čítačů.While users can publish any custom EventCounters to meet their needs, .NET Core 3.0 and higher runtime publishes a set of these counters by default. Tento dokument vás provede kroky potřebnými ke shromáždění a zobrazení EventCounters (definované systémem nebo uživatelem definovanému) v Azure Application Insights.This document will walk through the steps required to collect and view EventCounters (system defined or user defined) in Azure Application Insights.

Shromažďování EventCounters pomocí Application InsightsUsing Application Insights to collect EventCounters

Application Insights podporuje shromažďování EventCounters s jeho EventCounterCollectionModule součástí nově vydaných balíčků NuGet Microsoft. ApplicationInsights. EventCounterCollector.Application Insights supports collecting EventCounters with its EventCounterCollectionModule, which is part of the newly released NuGet package Microsoft.ApplicationInsights.EventCounterCollector. EventCounterCollectionModule se automaticky povolí při použití AspNetCore nebo WorkerService.EventCounterCollectionModule is automatically enabled when using either AspNetCore or WorkerService. EventCounterCollectionModule shromažďuje čítače s nekonfigurovatelnou frekvencí kolekce 60 sekund.EventCounterCollectionModule collects counters with a non-configurable collection frequency of 60 seconds. Ke shromáždění EventCounters nejsou nutná žádná zvláštní oprávnění.There are no special permissions required to collect EventCounters.

Shromážděny výchozí čítačeDefault counters collected

Pro aplikace běžící v rozhraní .NET Core 3,0 nebo vyšší jsou následující čítače shromažďovány automaticky sadou SDK.For apps running in .NET Core 3.0 or higher, the following counters are collected automatically by the SDK. Název čítačů bude ve formátu "kategorie | Čítač ".The name of the counters will be of the form "Category|Counter".

KategorieCategory ČítačCounter
System.Runtime cpu-usage
System.Runtime working-set
System.Runtime gc-heap-size
System.Runtime gen-0-gc-count
System.Runtime gen-1-gc-count
System.Runtime gen-2-gc-count
System.Runtime time-in-gc
System.Runtime gen-0-size
System.Runtime gen-1-size
System.Runtime gen-2-size
System.Runtime loh-size
System.Runtime alloc-rate
System.Runtime assembly-count
System.Runtime exception-count
System.Runtime threadpool-thread-count
System.Runtime monitor-lock-contention-count
System.Runtime threadpool-queue-length
System.Runtime threadpool-completed-items-count
System.Runtime active-timer-count

Poznámka

Od verze 2.15.0-beta3 sady ASPNETCORE SDK nebo sady WorkerService SDKnejsou ve výchozím nastavení shromažďovány žádné čítače.Starting with 2.15.0-beta3 version of either AspNetCore SDK or WorkerService SDK, no counters are collected by default. Samotný modul je povolený, takže uživatelé mohou jednoduše přidat požadované čítače a shromáždit je.The module itself is enabled, so users can simply add the desired counters to collect them.

Přizpůsobení čítačů, které se mají shromažďovatCustomizing counters to be collected

Následující příklad ukazuje, jak přidat nebo odebrat čítače.The following example shows how to add/remove counters. Toto přizpůsobení se provede v ConfigureServices metodě vaší aplikace po povolení Application Insights kolekce telemetrie pomocí AddApplicationInsightsTelemetry() nebo AddApplicationInsightsWorkerService() .This customization would be done in the ConfigureServices method of your application after Application Insights telemetry collection is enabled using either AddApplicationInsightsTelemetry() or AddApplicationInsightsWorkerService(). Následuje příklad kódu z aplikace ASP.NET Core.Following is an example code from an ASP.NET Core application. Pro jiný typ aplikace, přečtěte si Tento dokument.For other type of applications, refer to this document.

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

Zakazuje se modul EventCounter Collection.Disabling EventCounter collection module

EventCounterCollectionModule lze zakázat pomocí ApplicationInsightsServiceOptions .EventCounterCollectionModule can be disabled by using ApplicationInsightsServiceOptions. Příklad použití ASP.NET Core SDK je uveden níže.An example when using ASP.NET Core SDK is shown below.

    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 lze také použít pro WorkerService SDK, ale obor názvů musí být změněn, jak je znázorněno v následujícím příkladu.A similar approach can be used for the WorkerService SDK as well, but the namespace must be changed as shown in the example below.

    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íkovi metrikEvent counters in Metric Explorer

Pokud chcete v Průzkumníkovi metrikyzobrazit EventCounter metriky, vyberte Application Insights prostředek a zvolte metriky založené na protokolu jako obor názvů metriky.To view EventCounter metrics in Metric Explorer, select Application Insights resource, and chose Log-based metrics as metric namespace. Pak se metriky EventCounter zobrazí v kategorii vlastní.Then EventCounter metrics get displayed under Custom category.

Čítače událostí hlášené v Průzkumníkovi metrik Application InsightsEvent counters reported in Application Insights Metric Explorer

Čítače událostí v analýzáchEvent counters in Analytics

V tabulce customMetrics můžete také vyhledávat a zobrazovat sestavy čítače událostí v části analýzy.You can also search and display event counter reports in Analytics, in the customMetrics table.

Například spuštěním následujícího dotazu zjistíte, jaké čítače jsou shromažďovány a k dispozici pro dotaz:For example, run the following query to see what counters are collected and available to query:

customMetrics | summarize avg(value) by name

Čítače událostí hlášené v Application Insights AnalyticsEvent counters reported in Application Insights Analytics

Chcete-li získat graf určitého čítače (například: ThreadPool Completed Work Item Count ) za poslední období, spusťte následující dotaz.To get a chart of a specific counter (for example: ThreadPool Completed Work Item Count) over the recent period, run the following query.

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 o jednom čítači v Application InsightsChat of a single counter in Application Insights

Podobně jako u 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á.Like other telemetry, customMetrics also has a column cloud_RoleInstance that indicates the identity of the host server instance on which your app is running. Výše uvedený dotaz ukazuje hodnotu čítače na instanci a lze ji použít k porovnání výkonu různých instancí serveru.The above query shows the counter value per instance, and can be used to compare performance of different server instances.

VýstrahyAlerts

Podobně jako u jiných metrik můžete nastavit výstrahu , která vás upozorní, pokud počítadlo události překročí zadaný limit.Like other metrics, you can set an alert to warn you if an event counter goes outside a limit you specify. Otevřete podokno výstrahy a klikněte na Přidat výstrahu.Open the Alerts pane and click Add Alert.

Nejčastější dotazyFrequently asked questions

Můžu v živých metrikách zobrazit EventCounters?Can I see EventCounters in Live Metrics?

Živé metriky nezobrazují EventCounters k dnešnímu dni.Live Metrics do not show EventCounters as of today. K zobrazení telemetrie použijte Průzkumníka metrik nebo analýzu.Use Metric Explorer or Analytics to see the telemetry.

Na portálu webové aplikace Azure jsem Application Insights povolit.I have enabled Application Insights from Azure Web App Portal. Ale nevidím EventCounters.?But I can't see EventCounters.?

Application Insights rozšíření pro ASP.NET Core tuto funkci ještě nepodporuje.Application Insights extension for ASP.NET Core doesn't yet support this feature. Tento dokument bude aktualizován, pokud je tato funkce podporována.This document will be updated when this feature is supported.

Další krokyNext steps