共用方式為


System.Net 計量

本文說明使用 System.Net API 產生之 System.Diagnostics.Metrics 內建的網路計量。 如需以替代 EventCounters API 為基礎的計量清單,請參閱 .NET中 已知的 EventCounters。

提示

如需如何收集、報告、擴充及測試 System.Net 計量的詳細資訊,請參閱 .NET中的 網路計量。

System.Net.NameResolution

System.Net.NameResolution 計量會報告來自 Dns的 DNS 名稱解析:

計量:dns.lookup.duration
名字 檢測類型 單位 描述
dns.lookup.duration 直方圖 s 測量執行 DNS 查閱所花費的時間。
屬性 類型 描述 例子 存在
dns.question.name 字串 要查詢的名稱。 www.example.com;dot.net 總是
error.type 字串 已知的錯誤字串或所發生例外狀況的完整類型名稱。 host_not_found;System.Net.Sockets.SocketException 如果發生錯誤

此計量會測量發出 DNS 要求所需的時間。 這些要求可以透過在 Dns 上呼叫方法,或間接地在 HttpClient這類類型上間接呼叫 。

執行 DNS 查閱時,大部分的錯誤都會擲回 SocketException。 為了更好地釐清常見的錯誤案例,特定 SocketErrorCode 的套接字例外狀況會在 error.type中指定明確的錯誤名稱:

SocketErrorCode error.type
HostNotFound host_not_found
TryAgain try_again
AddressFamilyNotSupported address_family_not_supported
NoRecovery no_recovery

具有任何其他 SocketError 值的套接字例外狀況回報為 System.Net.Sockets.SocketException

使用 OpenTelemetry 時,此計量的預設貯體會設定為 [0.005、0.01、0.025、0.05、0.075、0.1、0.25、0.5、0.75、1、2.5、5、7.5、10 ]。

從 開始提供:.NET 8

System.Net.Http

System.Net.Http 計量會報告來自 System.Net.Http的 HTTP 要求和連線資訊:

計量:http.client.open_connections
名字 檢測類型 單位(UCUM) 描述
http.client.open_connections UpDownCounter {connection} 用戶端上目前作用中或閑置的輸出 HTTP 連線數目
屬性 類型 描述 例子 存在
http.connection.state 字串 HTTP 連接集區中的 HTTP 連線狀態。 active;idle 總是
network.protocol.version 字串 所使用的 HTTP 通訊協定版本。 1.1;2 總是
server.address 字串 傳送至 HTTP 要求 「URI 來源」 主機標識碼。 example.com 總是
server.port int 「URI 來源」的埠識別碼, HTTP 要求傳送至 。 80;8080;443 如果未預設 (80 設定的http443https
network.peer.address 字串 套接字連線的對等IP位址。 10.5.3.2 總是
url.scheme 字串 識別已使用通訊協定的 URI 配置 元件。 http;https;ftp 總是

HttpClient,當設定為使用預設 SocketsHttpHandler時,會維護用於傳送 HTTP 訊息的網路連線快取集區。 此計量會計算集區中目前有多少個連線。 作用中的連線正在處理作用中要求。 作用中連線可以傳輸數據或等候客戶端或伺服器。 閑置連線不會處理任何要求,但會保持開啟狀態,以便更快速地處理未來的要求。

從 開始提供:.NET 8

計量:http.client.connection.duration
名字 檢測類型 單位(UCUM) 描述
http.client.connection.duration 直方圖 s 成功建立輸出 HTTP 連線的持續時間。
屬性 類型 描述 例子 存在
network.protocol.version 字串 所使用的 HTTP 通訊協定版本。 1.1;2 總是
server.address 字串 傳送至 HTTP 要求 「URI 來源」 主機標識碼。 example.com 總是
server.port int 「URI 來源」的埠識別碼, HTTP 要求傳送至 。 80;8080;443 如果未預設 (80 設定的http443https
network.peer.address 字串 套接字連線的IP位址。 10.5.3.2 總是
url.scheme 字串 識別已使用通訊協定的 URI 配置 元件。 http;https;ftp 總是

只有當 HttpClient 設定為使用預設 SocketsHttpHandler時,才會擷取此計量。

由於此計量會追蹤連線持續時間,而且在理想情況下會針對多個要求使用 HTTP 連線,因此貯體應該比要求持續時間所使用的值區還要長。 例如,使用 [ 0.01、0.02、0.05、0.1、0.2、0.5、1、2、5、10、30、60、120、300 ] 提供 5 分鐘上限值區。

從 開始提供:.NET 8

計量:http.client.request.duration
名字 檢測類型 單位(UCUM) 描述
http.client.request.duration 直方圖 s 輸出 HTTP 要求的持續時間。
屬性 類型 描述 例子 存在
error.type 字串 要求失敗原因:snake_case中的其中一個 HTTP 要求錯誤,或完整的例外狀況類型,或 HTTP 4xx/5xx 狀態代碼。 System.Threading.Tasks.TaskCanceledException;name_resolution_error;secure_connection_error ;404 如果要求失敗。
http.request.method 字串 HTTP 要求方法。 GET;POST;HEAD;_OTHER [2] 總是
http.response.status_code int HTTP 回應狀態代碼 200 如果收到回應。
network.protocol.version 字串 所使用的 HTTP 通訊協定版本。 1.1;2 如果收到回應。
server.address 字串 傳送至 HTTP 要求 「URI 來源」 主機標識碼。 example.com 總是
server.port int 「URI 來源」的埠識別碼, HTTP 要求傳送至 。 80;8080;443 取決於 .NET 版本。 [3]
url.scheme 字串 識別已使用通訊協定的 URI 配置 元件。 http;https;ftp 總是

[1] error.type 如果要求失敗,值會設定為下列其中一項:

[2] http.request.methodhttp.request.method:** 如果方法是 RFC9110中列出的其中一個已知方法,則值會包含方法名稱;否則,此值會 _OTHER。 使用者提供的方法名稱會以不區分大小寫的方式對應至已知名稱。 例如,如果使用者提供名稱 GeT,則會對應至 GET

[3] server.port 值是否存在與版本相依:

  • .NET 8:如果不是預設,則為 [80][http 配置,443https
  • .NET 9+: 永遠存在

HTTP 用戶端要求持續時間會測量基礎客戶端處理程式完成要求所需的時間。 完成要求包括從網路數據流讀取回應標頭的時間。 不包含讀取回應本文所花費的時間。

使用 OpenTelemetry 時,此計量的預設貯體會設定為 [0.005、0.01、0.025、0.05、0.075、0.1、0.25、0.5、0.75、1、2.5、5、7.5、10 ]。

從 開始提供:.NET 8

提示

此計量 擴充

計量:http.client.request.time_in_queue
名字 檢測類型 單位(UCUM) 描述
http.client.request.time_in_queue 直方圖 s 等候可用連線之佇列上所花費的要求時間量。
屬性 類型 描述 例子 存在
http.request.method 字串 HTTP 要求方法。 GET;POST;HEAD 總是
network.protocol.version 字串 所使用的 HTTP 通訊協定版本。 1.1;2 總是
server.address 字串 傳送至 HTTP 要求 「URI 來源」 主機標識碼。 example.com 總是
server.port int 「URI 來源」的埠識別碼, HTTP 要求傳送至 。 80;8080;443 如果未預設 (80 設定的http443https
url.scheme 字串 識別已使用通訊協定的 URI 配置 元件。 http;https;ftp 總是

HttpClient,當設定為使用預設 SocketsHttpHandler時,會使用網路連線集區傳送 HTTP 要求。 如果所有連線都忙於處理其他要求,新要求會放在佇列中,並等候網路連線可供使用。 這項檢測會測量在透過網路傳送任何專案之前,HTTP 要求在佇列中等候的時間量。

從 開始提供:.NET 8

計量:http.client.active_requests
名字 檢測類型 單位(UCUM) 描述
http.client.active_requests UpDownCounter {request} 作用中 HTTP 要求的數目。
屬性 類型 描述 例子 存在
http.request.method 字串 HTTP 要求方法。 GET;POST;HEAD 總是
server.address 字串 傳送至 HTTP 要求 「URI 來源」 主機標識碼。 example.com 總是
server.port int 「URI 來源」的埠識別碼, HTTP 要求傳送至 。 80;8080;443 如果未預設 (80 設定的http443https
url.scheme 字串 識別已使用通訊協定的 URI 配置 元件。 http;https;ftp 總是

此計量會計算有多少要求被視為作用中。 要求在 HTTP.client.request.duration 檢測所測量的相同時間週期內為作用中。

從 開始提供:.NET 8