Inleiding tot EventCounters

EventCounter is .NET/.NET Core-mechanisme voor het publiceren en verbruiken van tellers of statistieken. EventCounters worden ondersteund in alle besturingssysteemplatforms: Windows, Linux en macOS. Het kan worden beschouwd als een platformoverschrijdend equivalent voor de PerformanceCounters die alleen wordt ondersteund in Windows-systemen.

Hoewel gebruikers aangepaste EventCounters items kunnen publiceren om aan hun behoeften te voldoen, publiceert .NET standaard een set van deze tellers. In dit document worden de stappen beschreven die nodig zijn om te verzamelen en weer EventCounters te geven (door het systeem gedefinieerd of door de gebruiker gedefinieerd) in Azure-toepassing Insights.

Notitie

De volgende documentatie is afhankelijk van de klassieke Application Insights-API. Het langetermijnplan voor Application Insights is het verzamelen van gegevens met behulp van OpenTelemetry. Zie Azure Monitor OpenTelemetry inschakelen voor .NET-, Node.js-, Python- en Java-toepassingen voor meer informatie.

Application Insights gebruiken om EventCounters te verzamelen

Application Insights ondersteunt het verzamelen EventCounters met EventCounterCollectionModulehet bijbehorende, dat deel uitmaakt van het zojuist uitgebrachte NuGet-pakket Microsoft.ApplicationInsights.EventCounterCollector. EventCounterCollectionModulewordt automatisch ingeschakeld wanneer u AspNetCore of WorkerService gebruikt. EventCounterCollectionModule verzamelt tellers met een niet-configureerbare verzamelingsfrequentie van 60 seconden. Er zijn geen speciale machtigingen vereist voor het verzamelen van EventCounters. Voor ASP.NET Core-toepassingen wilt u ook het Pakket Microsoft.ApplicationInsights.AspNetCore toevoegen.

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

Standaarditems verzameld

Vanaf versie 2.15.0 van aspNetCore SDK of WorkerService SDK worden er standaard geen tellers verzameld. De module zelf is ingeschakeld, zodat gebruikers de gewenste tellers kunnen toevoegen om ze te verzamelen.

Zie het document Beschikbare tellers voor een lijst met bekende tellers die zijn gepubliceerd door .NET Runtime.

Tellers aanpassen die moeten worden verzameld

In het volgende voorbeeld ziet u hoe u tellers toevoegt of verwijdert. Deze aanpassing wordt uitgevoerd als onderdeel van de configuratie van uw toepassingsservice nadat de verzameling telemetriegegevens van Application Insights is ingeschakeld met behulp van AddApplicationInsightsTelemetry() of AddApplicationInsightsWorkerService(). Hieronder volgt een voorbeeldcode van een ASP.NET Core-toepassing. Raadpleeg dit document voor andere typen toepassingen.

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-verzamelingsmodule uitschakelen

EventCounterCollectionModule kan worden uitgeschakeld met behulp van ApplicationInsightsServiceOptions.

In het volgende voorbeeld wordt de ASP.NET Core SDK gebruikt.

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

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

Een vergelijkbare benadering kan ook worden gebruikt voor de WorkerService SDK, maar de naamruimte moet worden gewijzigd, zoals wordt weergegeven in het volgende voorbeeld.

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

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

Gebeurtenistellers in Metric Explorer

Als u metrische gegevens van EventCounter in Metric Explorer wilt weergeven, selecteert u de Application Insights-resource en kiest u voor metrische gegevens op basis van logboeken als metrische naamruimte. Vervolgens worden metrische gegevens van EventCounter weergegeven onder Aangepaste categorie.

Event counters reported in Application Insights Metric Explorer

Gebeurtenistellers in Analytics

U kunt ook rapporten van gebeurtenistellers zoeken en weergeven in Analytics, in de tabel customMetrics .

Voer bijvoorbeeld de volgende query uit om te zien welke meteritems worden verzameld en beschikbaar zijn voor query's:

customMetrics | summarize avg(value) by name

Event counters reported in Application Insights Analytics

Voer de volgende query uit om een grafiek van een specifieke teller (bijvoorbeeld: ThreadPool Completed Work Item Count) op te halen in de afgelopen periode.

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

Net als andere telemetrie heeft customMetrics ook een kolom cloud_RoleInstance die de identiteit aangeeft van het hostserverexemplaren waarop uw app wordt uitgevoerd. De bovenstaande query toont de tellerwaarde per exemplaar en kan worden gebruikt om de prestaties van verschillende serverexemplaren te vergelijken.

Waarschuwingen

Net als andere metrische gegevens kunt u een waarschuwing instellen om u te waarschuwen als een gebeurtenisteller buiten een limiet valt die u opgeeft. Open het deelvenster Waarschuwingen en selecteer Waarschuwing toevoegen.

Veelgestelde vragen

Kan ik EventCounters zien in Live Metrics?

Live Metrics tonen vanaf vandaag geen EventCounters. Gebruik Metric Explorer of Analytics om de telemetrie te bekijken.

Ik heb Application Insights ingeschakeld vanuit de Azure Web App-portal. Waarom zie ik EventCounters niet?

De Application Insights-extensie voor ASP.NET Core biedt nog geen ondersteuning voor deze functie.

Volgende stappen