Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use IConfiguration a fim de filtrar instrumentos para ouvintes de métricas personalizadas que se integram à DI (injeção de dependência). Esses filtros controlam em quais instrumentos um ouvinte pode se inscrever, e não como ele agrega ou exporta medições.
Ouvintes de métricas
Um listener de métricas recebe medições de instrumentos, como contadores e histogramas, criados por um Meter. A classe MeterListener fornece uma API de baixo nível para descobrir instrumentos e assinar diretamente as medições. O tutorial da coleção de métricas mostra como usar essa API.
A IMetricsListener interface permite que os ouvintes personalizados se integrem aos filtros baseados em DI e configuração. A infraestrutura de métricas cria internamente um MeterListener para cada implementação IMetricsListener registrada. Ele aplica as regras configuradas antes de chamar InstrumentPublished a fim de oferecer um instrumento para a implementação. Se o ouvinte aceitar o instrument, a infraestrutura entregará medições aos retornos de chamada fornecidos pela implementação.
Para registrar um listener personalizado, use AddListener. A configuração neste artigo se aplica a esses ouvintes registrados, não a MeterListener instâncias configuradas diretamente pelo código ou pelo coletor.
Configuração de carregamento
Aplicativos de host genérico que usam as configurações do construtor padrão chamam automaticamente AddMetrics e carregam a seção Metrics de IConfiguration. Em um aplicativo DI não hospedado, chame AddMetrics e AddConfiguration(IMetricsBuilder, IConfiguration) explicitamente para vincular a mesma seção:
services.AddMetrics(metrics =>
metrics.AddConfiguration(configuration.GetSection("Metrics")));
Para usar esses métodos de extensão, importe os namespaces Microsoft.Extensions.Diagnostics.Metrics e Microsoft.Extensions.DependencyInjection.
Importante
A configuração Metrics só filtra instrumentos para implementações IMetricsListener registradas. Ele não registra ouvintes nem ativa as assinaturas, cria métricas, agrega medições, exporta dados ou configura automaticamente OpenTelemetry, Prometheus, dotnet-counters ou qualquer outro coletor.
Selecionar medidores e instrumentos
Use as seções a seguir para escolher a quais medidores as regras se aplicam:
| Seção | Aplica-se a |
|---|---|
EnabledMetrics |
Medidores globais e locais. |
EnabledGlobalMetrics |
Medidores sem um escopo, como medidores criados diretamente com Meter. |
EnabledLocalMetrics |
Medidores com escopo IMeterFactory do contêiner de serviço. |
Uma EnabledMetricsseção, EnabledGlobalMetricsou EnabledLocalMetrics diretamente sob Metrics se aplica a cada ouvinte registrado. Para direcionar um ouvinte, aninhe a seção sob o valor Name do ouvinte, como Metrics:MyListener:EnabledMetrics. Os nomes do ouvinte e do instrumento exigem correspondências exatas sem diferenciar maiúsculas de minúsculas.
Em qualquer uma dessas seções, uma entrada de medidor booleano habilita ou desabilita cada instrumento cujo nome do medidor corresponde. Para definir regras de nível de instrumento, use um objeto com nomes de instrumento como chaves. A entrada especial Default fornece um fallback. Uma entrada booliana Default no nível do medidor se aplica a medidores sem correspondência. Dentro de um objeto meter, Default aplica-se a instrumentos sem correspondência. Um ouvinte não receberá um instrumento se nenhuma regra corresponder a ele.
O exemplo a seguir appsettings.json habilita instrumentos em medidores cujos nomes começam com Contoso.Web, exceto para instrumentos chamados request-duration:
{
"Metrics": {
"EnabledMetrics": {
"Contoso.Web": {
"Default": true,
"request-duration": false
}
}
}
}
Regras de correspondência e resolução de conflitos
Os nomes de medidor usam correspondência de prefixo que não diferencia maiúsculas de minúsculas. Um nome de medidor pode conter no máximo um * curinga para corresponder a um prefixo e sufixo. As regras mais específicas têm precedência nesta ordem: regras específicas do ouvinte, padrões de nome de métrica mais longos, regras específicas de instrumento e regras específicas de escopo. Se regras igualmente específicas entrarem em conflito, a última regra configurada vencerá.