System.Net 計量
本文說明使用 System.Diagnostics.Metrics API 產生的內建 System.Net 網路計量。 如需以替代 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 |
string | 要查詢的名稱。 | www.example.com ; dot.net |
永遠 |
error.type |
string | 已知錯誤字串或所發生例外狀況的完整類型名稱。 | host_not_found ; System.Net.Sockets.SocketException |
如果發生錯誤 |
此計量會測量發出 DNS 要求所需的時間。 您可以藉由在 Dns 上呼叫方法或間接在 HttpClient 等類型上的較高層級 API 內呼叫方法來產生這些要求。
執行 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
http.client.connection.duration
http.client.request.duration
http.client.request.time_in_queue
http.client.active_requests
計量:http.client.open_connections
名稱 | 金融工具類型 | 單位 (UCUM) | 描述 |
---|---|---|---|
http.client.open_connections |
UpDownCounter | {connection} |
用戶端上目前作用中或閒置的輸出 HTTP 連線數目 |
屬性 | 類型 | 描述 | 範例 | 目前狀態 |
---|---|---|---|---|
http.connection.state |
string | HTTP 連線集區中的 HTTP 連線狀態。 | active ; idle |
永遠 |
network.protocol.version |
string | 所使用的應用層通訊協定版本。 | 1.1 ; 2 |
永遠 |
server.address |
string | 「URI 來源」HTTP 要求的主機識別碼會傳送至此。 | example.com |
永遠 |
server.port |
int | 「URI 來源」HTTP 要求的連接埠識別碼會傳送至此。 | 80 ; 8080 ; 443 |
如果不是預設值 (針對 http 配置使用 80 ,針對 https 使用 443 ) |
network.peer.address |
string | 通訊端連線的對等 IP 位址。 | 10.5.3.2 |
永遠 |
url.scheme |
string | 識別已使用通訊協定的 URI 配置元件。 | http ; https ; ftp |
永遠 |
當設定為使用預設的 SocketsHttpHandler 時,HttpClient 會維護用於傳送 HTTP 訊息的網路連線快取集區。 此計量會計算集區中目前有多少連線。 作用中的連線正在處理作用中的要求。 作用中的連線可以傳輸資料或等候用戶端或伺服器。 閒置連線不會處理任何要求,但會保持開啟狀態,以便更快速地處理未來的要求。
從此版本開始提供:.NET 8
計量:http.client.connection.duration
名稱 | 金融工具類型 | 單位 (UCUM) | 描述 |
---|---|---|---|
http.client.connection.duration |
長條圖 | s |
成功建立輸出 HTTP 連線的持續時間。 |
屬性 | 類型 | 描述 | 範例 | 目前狀態 |
---|---|---|---|---|
network.protocol.version |
string | 所使用的應用層通訊協定版本。 | 1.1 ; 2 |
永遠 |
server.address |
string | 「URI 來源」HTTP 要求的主機識別碼會傳送至此。 | example.com |
永遠 |
server.port |
int | 「URI 來源」HTTP 要求的連接埠識別碼會傳送至此。 | 80 ; 8080 ; 443 |
如果不是預設值 (針對 http 配置使用 80 ,針對 https 使用 443 ) |
network.peer.address |
string | 通訊端連線的 IP 位址。 | 10.5.3.2 |
永遠 |
url.scheme |
string | 識別已使用通訊協定的 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 |
string | 要求失敗原因:其中 一個 HTTP 要求錯誤,或完整的例外狀況類型,或 HTTP 4xx/5xx 狀態代碼。 | System.Threading.Tasks.TaskCanceledException ; name_resolution_error ; secure_connection_error ; 404 |
如果要求失敗。 |
http.request.method |
string | HTTP 要求方法。 | GET ; POST ; HEAD |
永遠 |
http.response.status_code |
int | HTTP 回應狀態碼。 | 200 |
如果收到的話。 |
network.protocol.version |
string | 所使用的應用層通訊協定版本。 | 1.1 ; 2 |
如果收到回應。 |
server.address |
string | 「URI 來源」HTTP 要求的主機識別碼會傳送至此。 | example.com |
永遠 |
server.port |
int | 「URI 來源」HTTP 要求的連接埠識別碼會傳送至此。 | 80 ; 8080 ; 443 |
如果不是預設值 (針對 http 配置使用 80 ,針對 https 使用 443 ) |
url.scheme |
string | 識別已使用通訊協定的 URI 配置元件。 | http ; https ; ftp |
永遠 |
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 |
string | HTTP 要求方法。 | GET ; POST ; HEAD |
永遠 |
network.protocol.version |
string | 所使用的應用層通訊協定版本。 | 1.1 ; 2 |
永遠 |
server.address |
string | 「URI 來源」HTTP 要求的主機識別碼會傳送至此。 | example.com |
永遠 |
server.port |
int | 「URI 來源」HTTP 要求的連接埠識別碼會傳送至此。 | 80 ; 8080 ; 443 |
如果不是預設值 (針對 http 配置使用 80 ,針對 https 使用 443 ) |
url.scheme |
string | 識別已使用通訊協定的 URI 配置元件。 | http ; https ; ftp |
永遠 |
設定為使用預設 SocketsHttpHandler 時,HttpClient 會使用網路連線集區傳送 HTTP 要求。 如果所有連線都忙於處理其他要求,新要求會放在佇列中,直到網路連線可供使用。 這項檢測會測量在透過網路傳送任何項目之前,HTTP 要求在佇列中等候的時間。
從此版本開始提供:.NET 8
計量:http.client.active_requests
名稱 | 金融工具類型 | 單位 (UCUM) | 描述 |
---|---|---|---|
http.client.active_requests |
UpDownCounter | {request} |
作用中 HTTP 要求的數目。 |
屬性 | 類型 | 描述 | 範例 | 目前狀態 |
---|---|---|---|---|
http.request.method |
string | HTTP 要求方法。 | GET ; POST ; HEAD |
永遠 |
server.address |
string | 「URI 來源」HTTP 要求的主機識別碼會傳送至此。 | example.com |
永遠 |
server.port |
int | 「URI 來源」HTTP 要求的連接埠識別碼會傳送至此。 | 80 ; 8080 ; 443 |
如果不是預設值 (針對 http 配置使用 80 ,針對 https 使用 443 ) |
url.scheme |
string | 識別已使用通訊協定的 URI 配置元件。 | http ; https ; ftp |
永遠 |
此計量會計算有多少要求被視為作用中。 在 http.client.request.duration 檢測所測量的相同時間週期內,要求為作用中。
從此版本開始提供:.NET 8