System.Net 計量
本文說明使用 System.Net API 產生之 System.Diagnostics.Metrics 內建的網路計量。 如需以替代
提示
如需如何收集、報告、擴充及測試 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
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 |
字串 | 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 設定的http ,443 https ) |
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 設定的http ,443 https ) |
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
: 如果要求失敗,值會設定為下列其中一項:
- 類型為的例外狀況名稱,例如,TaskCanceledException。
- 表示客戶端或伺服器錯誤的狀態代碼,例如,
500
。 - 如果 HttpRequestException 發生於 HttpRequestError以外的
Unknown
,則蛇例中的列舉值,例如name_resolution_error
。
[2] http.request.method
:http.request.method
:** 如果方法是 RFC9110中列出的其中一個已知方法,則值會包含方法名稱;否則,此值會 _OTHER
。 使用者提供的方法名稱會以不區分大小寫的方式對應至已知名稱。 例如,如果使用者提供名稱 GeT
,則會對應至 GET
。
[3] server.port
: 值是否存在與版本相依:
-
.NET 8:如果不是預設,則為 [
80
][http
配置,443
https
) - .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 設定的http ,443 https ) |
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 設定的http ,443 https ) |
url.scheme |
字串 | 識別已使用通訊協定的 URI 配置 元件。 |
http ;https ;ftp |
總是 |
此計量會計算有多少要求被視為作用中。 要求在 HTTP.client.request.duration 檢測所測量的相同時間週期內為作用中。
從 開始提供:.NET 8