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 Activer Azure Monitor OpenTelemetry pour les applications .NET, Node.js, Python et Java et notre feuille de route OpenTelemetry. L’aide sur la migration est disponible pour .NET, Node.js et Python.
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.
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
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
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é.