Configurare le metriche

Usare IConfiguration per filtrare gli strumenti per listener di metriche personalizzati che si integrano con l'iniezione delle dipendenze (DI). Questi filtri controllano a quali strumenti un listener può iscriversi, non come aggrega o esporta le misurazioni.

Listener per le metriche

Un listener di metriche riceve misurazioni da strumenti, ad esempio contatori e istogrammi, creati da un Meter. La classe MeterListener fornisce un'API di basso livello per individuare gli strumenti e sottoscriversi direttamente alle relative misurazioni. L'esercitazione sulla raccolta di metriche illustra come usare questa API.

L'interfaccia IMetricsListener consente ai listener personalizzati di integrarsi con filtri basati sull'iniezione delle dipendenze e sulla configurazione. L'infrastruttura delle metriche crea internamente un MeterListener per ogni implementazione registrata di IMetricsListener. Applica le regole configurate prima di chiamare InstrumentPublished per fornire uno strumento all'implementazione. Se il listener accetta lo strumento, l'infrastruttura fornisce misurazioni ai callback che l'implementazione fornisce.

Per registrare un listener personalizzato, usare AddListener. La configurazione in questo articolo si applica a questi listener registrati, non alle istanze MeterListener configurate direttamente dal codice o da un collector.

Carica configurazione della rete

Le applicazioni host generiche che usano le impostazioni predefinite del generatore chiamano AddMetrics e caricano automaticamente la Metrics sezione da IConfiguration. In un'applicazione di iniezione delle dipendenze non ospitata, chiamare AddMetrics e AddConfiguration(IMetricsBuilder, IConfiguration) esplicitamente per associare la stessa sezione:

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

Per usare questi metodi di estensione, importare i namespace Microsoft.Extensions.DependencyInjection e Microsoft.Extensions.Diagnostics.Metrics.

Importante

La configurazione Metrics filtra solo gli strumenti per le implementazioni IMetricsListener registrate. Non registra i listener né attiva le sottoscrizioni, crea metriche, aggrega le misurazioni, esporta dati o configura automaticamente OpenTelemetry, Prometheus, dotnet-counters o qualsiasi altro collettore.

Selezionare misuratori e strumenti

Usare le sezioni seguenti per scegliere i contatori a cui si applicano le regole:

Sezione Si applica a
EnabledMetrics Contatori globali e locali.
EnabledGlobalMetrics Contatori senza ambito, come i contatori creati direttamente con Meter.
EnabledLocalMetrics Contatori con ambito limitato al contenitore del servizioIMeterFactory.

Una sezione EnabledMetrics, EnabledGlobalMetrics o EnabledLocalMetrics direttamente sotto Metrics si applica a ogni listener registrato. Per indirizzare un listener specifico, annidare la sezione sotto il valore del listener Name, ad esempio Metrics:MyListener:EnabledMetrics. I nomi del listener e degli strumenti richiedono corrispondenze esatte senza considerare la distinzione tra maiuscole e minuscole.

All'interno di una di queste sezioni, una voce del misuratore booleano abilita o disabilita ogni strumento il cui nome del misuratore corrisponde. Per impostare le regole a livello di strumento, usare un oggetto con nomi di strumento come chiavi. La voce speciale Default fornisce un fallback. Una voce booleana Default a livello di contatore si applica ai contatori altrimenti non corrispondenti. All'interno di un oggetto meter, Default si applica a strumenti altrimenti non corrispondenti. Un listener non riceve uno strumento se nessuna regola corrisponde.

L'esempio seguente appsettings.json abilita gli strumenti dai meter i cui nomi iniziano con Contoso.Web, ad eccezione degli strumenti denominati request-duration:

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

Regole di corrispondenza e risoluzione dei conflitti

I nomi dei contatori usano la corrispondenza del prefisso senza distinzione tra maiuscole e minuscole. Un nome del contatore può contenere al massimo un * carattere jolly per far corrispondere un prefisso e un suffisso. Le regole più specifiche hanno la precedenza in questo ordine: regole specifiche del listener, pattern del nome del meter più lunghi, regole specifiche dello strumento e regole specifiche dell'ambito. Se le regole ugualmente specifiche sono in conflitto, l'ultima regola configurata vince.

Vedere anche