Présentation des compteurs d’événements

EventCounter est le mécanisme .NET/.NET Core permettant de publier et consommer des compteurs ou des statistiques. Les compteurs d’événements sont pris en charge sur toutes les plateformes de système d’exploitation : Windows, Linux et macOS. Vous pouvez les considérer comme l’équivalent multiplateforme des compteurs de performances, uniquement pris en charge dans les systèmes Windows.

Alors que les utilisateurs peuvent publier n’importe quel EventCounters personnalisé pour répondre à leurs besoins, .NET publie un ensemble de ces compteurs par défaut. Ce document décrit les étapes nécessaires à la collecte et à l’affichage des EventCounters (définis par le système ou par l’utilisateur) dans Azure Application Insights.

Remarque

La documentation suivante s’appuie sur l’API classique d’Application Insights. Le plan à long terme pour Application Insights est de collecter des données en utilisant OpenTelemetry. Pour plus d’informations, consultez la section Activer Azure Monitor OpenTelemetry pour les applications .NET, Node.js, Python et Java.

Utilisation d’Application Insights pour collecter des compteurs d’événements

Application Insights prend en charge la collecte de EventCounters avec son EventCounterCollectionModule, qui fait partie du package NuGet récemment publié Microsoft.ApplicationInsights.EventCounterCollector. EventCounterCollectionModule est automatiquement activé dès que vous utilisez AspNetCore ou WorkerService. EventCounterCollectionModule collecte les compteurs selon une fréquence non configurable de 60 secondes. Aucune autorisation spéciale n’est nécessaire pour collecter des compteurs d’événements. Pour les applications ASP.NET Core, vous souhaitez également ajouter le package Microsoft.ApplicationInsights.AspNetCore.

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

Compteurs par défaut collectés

À partir de la version 2.15.0 du Kit de développement logiciel (SDK) AspNetCore et du Kit de développement logiciel (SDK) WorkerService, aucun compteur n’est collecté par défaut. Le module lui-même est activé, les utilisateurs peuvent donc ajouter les compteurs souhaités pour les collecter.

Pour obtenir la liste des compteurs connus publiés par le Runtime .NET, consultez le document Compteurs disponibles.

Personnalisation des compteurs à collecter

L’exemple suivant montre comment ajouter/supprimer des compteurs. Cette personnalisation est effectuée dans le cadre de la configuration de votre service d’application une fois que la collecte de données de télémétrie Application Insights est activée en utilisant AddApplicationInsightsTelemetry() ou AddApplicationInsightsWorkerService(). Voici un exemple de code d’une application ASP.NET Core. Pour les autres types d’applications, reportez-vous à ce document.

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

Désactivation du module de collecte EventCounter

EventCounterCollectionModule peut être désactivé avec ApplicationInsightsServiceOptions.

L’exemple suivant utilise le Kit de développement logiciel (SDK) ASP.NET Core.

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

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

Une approche similaire peut également être utilisée pour le kit de développement logiciel (SDK) WorkerService, mais l’espace de noms doit être modifié comme indiqué dans l’exemple suivant.

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

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

Compteurs d’événements dans Metric Explorer

Pour voir les métriques de compteur d’événements dans Metric Explorer, sélectionnez une ressource Application Insights, puis choisissez des métriques basées sur un journal comme espace de noms de métrique. Ainsi, les métriques de compteur d’événements s’affichent sous Catégorie personnalisée.

Event counters reported in Application Insights Metric Explorer

Compteurs d’événements dans Analytics

Vous pouvez également rechercher et afficher des rapports de compteurs d’événements dans Analytics, dans la table customMetrics.

Par exemple, exécutez la requête suivante pour voir quels compteurs sont collectés et disponibles pour la requête :

customMetrics | summarize avg(value) by name

Event counters reported in Application Insights Analytics

Pour obtenir un graphique d’un compteur spécifique (par exemple, ThreadPool Completed Work Item Count) sur la période récente, exécutez la requête suivante.

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

Comme les autres données de télémétrie, customMetrics possède également une colonne cloud_RoleInstance qui indique l’identité de l’instance de serveur hôte sur lequel votre application est en cours d’exécution. La requête ci-dessus montre la valeur de compteur par instance et peut servir à comparer les performances des différentes instances de serveur.

Alertes

À l’instar d’autres métriques, vous pouvez définir une alerte pour vous avertir si un compteur d’événements dépasse une limite que vous spécifiez. Ouvrez le volet Alertes et cliquez sur Ajouter une alerte.

Forum aux questions

Puis-je voir les compteurs d’événements dans les métriques temps réel ?

Les métriques temps réel ne présentent pas EventCounters à partir du jour actuel. Utilisez Metrics Explorer ou Analytics pour voir les données de télémétrie.

J’ai activé Application Insights à partir du portail d’application web Azure. Pourquoi je ne vois pas EventCounters ?

L’extension Application Insights pour ASP.NET Core ne prend pas encore en charge cette fonctionnalité.

Étapes suivantes