Introduzione di EventCounter

EventCounter è un meccanismo di .NET/.NET Core per pubblicare e utilizzare contatori o statistiche. Il supporto per EventCounter è disponibile in tutte le piattaforme del sistema operativo, ovvero Windows, Linux e macOS. Possono essere considerati un equivalente multipiattaforma per PerformanceCounters che è supportato solo nei sistemi Windows.

Anche se gli utenti possono pubblicare qualsiasi personalizzato EventCounters per soddisfare le proprie esigenze, .NET pubblica un set di questi contatori per impostazione predefinita. Questo documento illustra i passaggi necessari per raccogliere e visualizzare EventCounters (definito dal sistema o definito dall'utente) in app Azure lication Insights.

Nota

La documentazione seguente si basa sull'API classica di Application Insights. Il piano a lungo termine per Application Insights consiste nel raccogliere dati usando OpenTelemetry. Per altre informazioni, vedere Abilitare OpenTelemetry di Monitoraggio di Azure per le applicazioni .NET, Node.js, Python e Java.

Uso di Application Insights per raccogliere EventCounters

Application Insights supporta la raccolta EventCounters con il relativo EventCounterCollectionModule, che fa parte del pacchetto NuGet appena rilasciato Microsoft.ApplicationInsights.EventCounterCollector. EventCounterCollectionModule viene abilitato automaticamente quando si usa AspNetCore o WorkerService. EventCounterCollectionModule raccoglie i contatori con una frequenza di raccolta non configurabile di 60 secondi. Non sono richieste autorizzazioni speciali per raccogliere EventCounters. Per ASP.NET applicazioni Core, è necessario aggiungere anche il pacchetto Microsoft.ApplicationInsights.AspNetCore .

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

Contatori predefiniti raccolti

A partire dalla versione 2.15.0 di AspNetCore SDK o WorkerService SDK, per impostazione predefinita non vengono raccolti contatori. Il modulo stesso è abilitato, in modo che gli utenti possano aggiungere i contatori desiderati per raccoglierli.

Per ottenere un elenco di contatori noti pubblicati da .NET Runtime, vedere il documento Contatori disponibili.

Personalizzazione dei contatori da raccogliere

L'esempio seguente illustra come aggiungere/rimuovere contatori. Questa personalizzazione verrà eseguita come parte della configurazione del servizio applicazione dopo l'abilitazione della raccolta di dati di telemetria di Application Insights tramite AddApplicationInsightsTelemetry() o AddApplicationInsightsWorkerService(). Di seguito è disponibile un esempio di codice da un'applicazione ASP.NET Core. Per altri tipi di applicazioni, vedere questo documento.

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

Disabilitazione del modulo di raccolta EventCounter

EventCounterCollectionModule può essere disabilitato tramite ApplicationInsightsServiceOptions.

L'esempio seguente usa ASP.NET Core SDK.

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

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

Un approccio simile può essere usato anche per WorkerService SDK, ma lo spazio dei nomi deve essere modificato come illustrato nell'esempio seguente.

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

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

Contatori degli eventi nello strumento di esplorazione metriche

Per visualizzare le metriche di EventCounter nello strumento di esplorazione metriche, selezionare la risorsa di Application Insights e scegliere le metriche basate su log come spazio dei nomi per la metrica. Le metriche di EventCounter vengono visualizzate nella categoria Personalizzata.

Event counters reported in Application Insights Metric Explorer

Contatori degli eventi in Analytics

È anche possibile cercare e visualizzare report sui contatori degli eventi in Analytics nella scheda customMetrics.

Eseguire ad esempio la query seguente per visualizzare i contatori raccolti e disponibili per le query:

customMetrics | summarize avg(value) by name

Event counters reported in Application Insights Analytics

Per ottenere un grafico di un contatore specifico, ad esempio ThreadPool Completed Work Item Count, nel periodo recente, eseguire la query seguente.

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

Come altri dati di telemetria, customMetrics contiene anche una colonna cloud_RoleInstance che indica l'identità dell'istanza del server host in cui viene eseguita l'app. La query precedente mostra il valore del contatore per ogni istanza e può essere usata per confrontare le prestazioni di diverse istanze del server.

Avvisi

Come per altre metriche, è possibile impostare un avviso per ricevere una notifica se un contatore degli eventi supera un limite specificato. Aprire il riquadro Avvisi e selezionare Aggiungi avviso.

Domande frequenti

È possibile visualizzare EventCounters in Metriche attive?

Le metriche attive non mostrano EventCounters a partire da oggi. Usare lo strumento di esplorazione metriche o Analytics per visualizzare i dati di telemetria.

Application Insights è stato abilitato dal portale di App Web di Azure. Perché non è possibile visualizzare EventCounters?

L'estensione di Application Insights per ASP.NET Core non supporta ancora questa funzionalità.

Passaggi successivi