Configurer les métriques

Utilisez IConfiguration pour filtrer des instruments pour les écouteurs de métriques personnalisés qui s’intègrent à l’injection de dépendances (DI). Ces filtres contrôlent les instruments auxquels un listener peut s’abonner, et non la façon dont il agrège ou exporte des mesures.

Observateurs de métriques

Un listener de métriques reçoit des mesures d’instruments, tels que des compteurs et des histogrammes, créés par un Meter. La MeterListener classe fournit une API de bas niveau pour découvrir les instruments et s’abonner directement à leurs mesures. Le didacticiel de collecte de métriques montre comment utiliser cette API.

L’interface IMetricsListener permet aux écouteurs personnalisés de s’intégrer à DI et aux filtres basés sur la configuration. L’infrastructure de métriques crée en interne une MeterListener pour chaque implémentation inscrite IMetricsListener. Il applique les règles configurées avant d’appeler InstrumentPublished pour fournir un mécanisme à l’implémentation. Si le listener accepte l’instrument, l’infrastructure fournit des mesures aux fonctions de rappel que l’implémentation fournit.

Pour inscrire un écouteur personnalisé, utilisez AddListener. La configuration de cet article s’applique à ces écouteurs inscrits, et non aux MeterListener instances que votre code ou un collecteur configure directement.

Charger la configuration

Les applications hôtes génériques qui utilisent les paramètres de générateur par défaut appellent automatiquement AddMetrics et chargent la section Metrics à partir de IConfiguration. Dans une application di non hébergée, appelez explicitement AddConfiguration(IMetricsBuilder, IConfiguration) et AddMetrics pour lier la même section :

services.AddMetrics(metrics =>
    metrics.AddConfiguration(configuration.GetSection("Metrics")));

Pour utiliser ces méthodes d’extension, importez les espaces de noms Microsoft.Extensions.Diagnostics.Metrics et Microsoft.Extensions.DependencyInjection.

Important

La Metrics configuration filtre uniquement les instruments pour les implémentations enregistrées IMetricsListener . Il n’inscrit pas d’écouteurs ni n’active leurs abonnements, ni ne crée des métriques, ni ne regroupe des mesures, ni n’exporte des données, ni ne configure automatiquement OpenTelemetry, Prometheus, dotnet-counters ou tout autre collecteur.

Compteurs et instruments

Utilisez les sections suivantes pour choisir les compteurs divisionnaires auxquels les règles s’appliquent :

Rubrique S’applique à
EnabledMetrics Les compteurs globaux et locaux.
EnabledGlobalMetrics Compteurs sans portée, tels que les compteurs créés directement avec Meter.
EnabledLocalMetrics Compteurs associés au conteneur de service IMeterFactory.

Une section EnabledMetrics, EnabledLocalMetrics ou EnabledGlobalMetrics directement sous Metrics s’applique à chaque listener. Pour cibler un listener, imbriquez la section sous la valeur du listener Name, par exemple Metrics:MyListener:EnabledMetrics. Les noms d’auditeurs et d’instruments nécessitent des correspondances exactes sans tenir compte de la casse.

Dans n’importe laquelle de ces sections, une entrée de mesure booléenne active ou désactive chaque instrument dont le nom de la mesure correspond. Pour définir des règles au niveau de l’instrument, utilisez un objet avec des noms d’instrument comme clés. L’entrée spéciale Default fournit une solution de secours. Une entrée booléenne Default au niveau du compteur s’applique aux compteurs non appariés par ailleurs. Dans un objet de mesure, Default s’applique à des instruments sans correspondance par ailleurs. Un listener ne reçoit pas d’instrument si aucune règle ne lui correspond.

L’exemple suivant appsettings.json active les instruments des compteurs dont les noms commencent par Contoso.Web, à l’exception des instruments nommés request-duration:

{
  "Metrics": {
    "EnabledMetrics": {
      "Contoso.Web": {
        "Default": true,
        "request-duration": false
      }
    }
  }
}

Mettre en correspondance les règles et résoudre les conflits

Les noms de compteurs utilisent la correspondance de préfixe non sensible à la casse. Un nom de compteur peut contenir au plus un * caractère générique dans un modèle comportant un préfixe et un suffixe. Les règles plus spécifiques sont prioritaires dans cet ordre : règles spécifiques au listener, motifs de nom de compteur plus longs, règles spécifiques à l’instrument et règles spécifiques à la portée. Si des règles tout aussi spécifiques sont en conflit, la dernière règle configurée gagne.

Voir également :