Configurar métricas

Utilize IConfiguration para filtrar instrumentos para ouvintes de métricas personalizadas que se integram com injeção de dependências (DI). Estes filtros controlam a que instrumentos um listener pode subscrever, não a forma como este agrega ou exporta as medições.

Detetores de métricas

Um ouvinte de métricas recebe medições de instrumentos, como contadores e histogramas, criados por um Meter. A MeterListener classe fornece uma API de baixo nível para descobrir instrumentos e subscrever diretamente as suas medições. O tutorial de recolha de métricas mostra como usar esta API.

A interface IMetricsListener permite que ouvintes personalizados se integrem com DI e filtros baseados em configuração. A infraestrutura de métricas cria internamente um MeterListener para cada implementação IMetricsListener registada. Aplica as regras configuradas antes de chamar InstrumentPublished para oferecer instrumentação à implementação. Se o listener aceitar o instrumento, a infraestrutura fornece medidas aos callbacks que a implementação fornece.

Para registar um listener personalizado, use AddListener. A configuração neste artigo aplica-se a estes ouvintes registados, não a instâncias MeterListener que o seu código ou um coletor configura diretamente.

Configuração de carga

aplicações Generic Host que usam as definições padrão do construtor chamam AddMetrics automaticamente e carregam a secção Metrics de IConfiguration. Numa aplicação DI não hospedada, chame AddMetrics e AddConfiguration(IMetricsBuilder, IConfiguration) explicitamente para associar a mesma secção:

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

Para usar estes métodos de extensão, importe os espaços de nomes Microsoft.Extensions.DependencyInjection e Microsoft.Extensions.Diagnostics.Metrics.

Importante

A configuração Metrics filtra instrumentos apenas para implementações registadas IMetricsListener. Não regista listeners nem ativa as suas subscrições, cria métricas, agrega medições, exporta dados nem configura automaticamente o OpenTelemetry, Prometheus, dotnet-counters ou qualquer outro coletor.

Selecione medidores e instrumentos

Utilize as secções seguintes para escolher a que medidores se aplicam as regras:

Secção Aplica-se a
EnabledMetrics Medidores globais e locais.
EnabledGlobalMetrics Medidores sem escopo, como os medidores criados diretamente com Meter.
EnabledLocalMetrics Os contadores estão associados ao contentor de serviço IMeterFactory.

Uma EnabledMetrics, EnabledGlobalMetrics, ou EnabledLocalMetrics secção diretamente abaixo de Metrics aplica-se a todos os ouvintes registados. Para direcionar um listener, aninhe a secção sob o valor de Name do listener, como Metrics:MyListener:EnabledMetrics. Os nomes do ouvinte e dos instrumentos exigem correspondências exatas sem distinção entre maiúsculas e minúsculas.

Dentro de qualquer uma destas secções, uma entrada booleana de medidor permite ou desativa todos os instrumentos cujo nome do medidor corresponde. Para definir regras ao nível do instrumento, use um objeto com nomes de instrumentos como chaves. A entrada especial Default oferece uma alternativa de recurso. Uma entrada booleana Default ao nível do medidor aplica-se a medidores que de outra forma não seriam correspondidos. Dentro de um objeto meter, Default aplica-se a instrumentos que, de outra forma, não teriam correspondência. Um ouvinte não recebe um instrumento se nenhuma regra corresponder a ele.

O exemplo seguinte appsettings.json permite instrumentos provenientes de medidores cujos nomes começam por Contoso.Web, exceto para instrumentos nomeados request-duration:

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

Fazer corresponder regras e resolver conflitos

Os nomes dos contadores utilizam correspondência por prefixo insensível a maiúsculas e minúsculas. O nome de um medidor pode conter, no máximo, um * carácter universal para corresponder simultaneamente a um prefixo e a um sufixo. Regras mais específicas têm precedência nesta ordem: regras específicas do listener, padrões de nomes de métricas mais longos, regras específicas do instrumento e regras específicas do escopo. Se regras igualmente específicas entrarem em conflito, a última regra configurada vence.

Ver também