Ölçümleri yapılandırma

bağımlılık enjeksiyonu (DI) ile tümleşen özel ölçüm dinleyicileri için araçları filtrelemek üzere IConfiguration kullanın. Bu filtreler, ölçümleri nasıl topladığı veya dışa aktardığını değil, listener'ın abone olabileceği araçları denetler.

Metrik dinleyicileri

Metrik dinleyicisi, bir Meter tarafından oluşturulan sayaçlar ve histogramlar gibi araçlardan ölçümler alır. MeterListener sınıfı, araçları bulmak ve ölçümlerine doğrudan abone olmak için alt düzey bir API sağlar. Ölçüm toplama öğreticisi, bu API'nin nasıl kullanılacağını gösterir.

IMetricsListener arayüzü, özel dinleyicilerin DI ve yapılandırma tabanlı filtrelerle tümleşmesini sağlar. Ölçüm altyapısı, kayıtlı her MeterListener uygulaması için dahili olarak bir IMetricsListener oluşturur. Uygulamaya bir araç sunmak için InstrumentPublished öğesini çağırmadan önce yapılandırılan kuralları uygular. Dinleyici aracı kabul ederse altyapı, gerçeklemenin sağladığı geri çağırmalara ölçümler sağlar.

Özel bir dinleyici kaydetmek için AddListener kullanın. Bu makaledeki yapılandırma, kodunuzun veya bir toplayıcının doğrudan yapılandırdığı MeterListener örnekleri için değil, bu kayıtlı dinleyiciler için geçerlidir.

Yapılandırma yükle

Varsayılan oluşturucu ayarlarını kullanan Generic Host uygulamaları, otomatik olarak IConfiguration çağırır ve Metrics içindeki AddMetrics bölümünü yükler. Barındırılmayan bir DI uygulamasında, aynı bölümü bağlamak için AddMetrics ve AddConfiguration(IMetricsBuilder, IConfiguration) öğelerini açıkça çağırın:

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

Bu uzantı yöntemlerini kullanmak için Microsoft.Extensions.Diagnostics.Metrics ve Microsoft.Extensions.DependencyInjection ad alanlarını içeri aktarın.

Important

Metrics yapılandırması yalnızca kayıtlı IMetricsListener gerçeklemeleri için araçları filtreler. Dinleyicileri kaydetmez veya aboneliklerini etkinleştirmez, ölçüm oluşturmaz, ölçümleri toplamaz, verileri dışarı aktarmaz veya OpenTelemetry, Prometheus dotnet-countersveya başka bir toplayıcıyı otomatik olarak yapılandırmaz.

Sayaçlar ve aletler seçin

Kuralların hangi sayaçlara uygulanacağını seçmek için aşağıdaki bölümleri kullanın:

Bölüm Şunlar için geçerlidir:
EnabledMetrics Hem küresel hem de yerel sayaçlar.
EnabledGlobalMetrics Doğrudan Meter ile oluşturulan metreler gibi kapsamsız metreler.
EnabledLocalMetrics Hizmet kapsayıcısının IMeterFactory kapsamındaki ölçümler.

EnabledLocalMetrics altındaki bir Metrics, EnabledMetrics veya EnabledGlobalMetrics bölümü, kayıtlı her dinleyici için geçerlidir. Bir dinleyiciyi hedeflemek için bölümü dinleyicinin Name değerinin altına, örneğin Metrics:MyListener:EnabledMetrics olacak şekilde iç içe yerleştirin. Dinleyici ve araç adları, büyük/küçük harfe bakılmaksızın tam eşleşmeler gerektirir.

Bu bölümlerden herhangi birinde Boolean sayaç girdisi, sayaç adı eşleşen her aleti etkinleştirir veya devre dışı bırakır. Enstrüman düzeyi kuralları ayarlamak için, araç adlarını anahtar olarak içeren bir nesne kullanın. Özel Default girişi bir yedek seçenek sağlar. Sayaç düzeyinde boole Default girişi, aksi takdirde eşleşmeyen sayaçlar için geçerlidir. Metre nesnesi içinde, Default aksi takdirde eşleşmeyen enstrümanlar için geçerlidir. Hiçbir kural eşleşmediği takdirde dinleyici bir enstrüman almaz.

Aşağıdaki appsettings.json örnek, adları request-duration ile başlayan ölçerlerden, adı Contoso.Web olan araçlar dışındaki araçları etkinleştirir:

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

Kuralları eşleştirin ve çakışmaları çözün

Ölçüm adları büyük/küçük harfe duyarlı olmayan ön ek eşleştirme kullanır. Ölçüm adı, ön ek ve soneki eşleştirmek için en fazla * bir joker karakter içerebilir. Daha özel kurallar şu sırayla önceliklidir: dinleyiciye özgü kurallar, daha uzun meter adı desenleri, alete özgü kurallar ve kapsama özgü kurallar. Eşit olarak belirli kurallar çakışırsa, son yapılandırılan kural kazanır.

Ayrıca bkz.