設定計量

使用 IConfiguration 來篩選供可整合依賴注入(DI)的自訂指標監聽器使用的儀器。 這些過濾器控制監聽器可以訂閱哪些儀器,而非如何彙整或匯出測量結果。

指標監聽器

度量聆聽者會接收由 Meter 建立的儀器所提供的測量值,例如計數器和長條圖。 該 MeterListener 類別提供一個低階的 API,讓人們能直接發現儀器並訂閱其測量數據。 指標 收集教學 展示了如何使用這個 API。

此 IMetricsListener 介面允許自訂監聽器與 DI 及基於配置的濾波器整合。 指標基礎設施會為每個已註冊的MeterListener實作,在內部建立一個IMetricsListener。 它在呼叫 InstrumentPublished 提供工具給實作前,先套用已配置的規則。 如果監聽器接受該插樁,基礎架構會將測量數據傳送給實作所提供的回調。

若要註冊自訂監聽器,請使用 AddListener。 本文的設定適用於這些註冊監聽者,而不適用於你的程式碼或收集器直接配置的 MeterListener 實例。

載入設定

使用預設建構器設定的通用 Host應用程式會自動呼叫AddMetrics,並從IConfiguration載入Metrics區段。 在非託管的 DI 應用程式中,明確呼叫 AddMetrics 和 AddConfiguration(IMetricsBuilder, IConfiguration) 來繫結同一區段:

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

要使用這些擴充方法,請匯入 Microsoft.Extensions.DependencyInjection 和 Microsoft.Extensions.Diagnostics.Metrics 命名空間。

Important

此 Metrics 配置僅過濾已註冊 IMetricsListener 實作的插樁。 它不會註冊監聽器、啟用其訂閱、建立指標、彙整測量、匯出資料,或自動設定 OpenTelemetry、Prometheus、dotnet-counters 或任何其他收集器。

精選測量儀表與儀器

請參考以下章節選擇規則適用於哪些電錶:

區段 適用對象
EnabledMetrics 全域和本地計量器都有。
EnabledGlobalMetrics 沒有作用域的計量器,例如直接用 Meter 建立的計量器。
EnabledLocalMetrics 電表限定於服務容器的 IMeterFactory。

直接位於 EnabledLocalMetrics 下方的 Metrics、EnabledMetrics 或 EnabledGlobalMetrics 區段會套用至所有已註冊的接聽程式。 要鎖定一個接聽程式,將該區段置於該接聽程式的 Name 值下,例如 Metrics:MyListener:EnabledMetrics。 Listener 名稱與樂器名稱需完全相符,不論大小寫。

在這些區段中,布林 meter 項目可啟用或停用所有 meter 名稱相符的儀器。 要設定金融工具層級規則,請使用一個物件,其鍵為金融工具名稱。 特別 Default 項目提供了備援。 在計量表層級的布林 Default 條目適用於其他未被匹配的計量表。 在儀表物件內, Default 適用於其他無法匹配的儀器。 如果沒有任何規則與其相符,接聽程式就不會收到該檢測器。

以下 appsettings.json 範例允許使用名稱以 Contoso.Web 開頭的電表中的儀器,但不包括名稱為 request-duration 的儀器:

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

配對規則與衝突解決

電表名稱使用不區分大小寫的前綴比對。 一個計量器名稱最多只能包含一個 * 通配字元,以匹配前綴和後綴。 更具體的規則依序優先:監聽器專屬規則、較長的 meter 名稱模式、樂器專屬規則,以及作用域專屬規則。 若相同具體規則相互衝突,最後設定的規則勝出。

也請參閱