共用方式為


ASP.NET Core 計量

本文說明使用 System.Diagnostics.Metrics API 產生的內建 ASP.NET Core 計量。 如需以舊版 EventCounters API 為基礎的計量清單,請參閱此處

提示

如需如何收集、報告、擴充及測試 ASP.NET Core 計量的詳細資訊,請參閱使用 ASP.NET Core 計量

Microsoft.AspNetCore.Hosting

Microsoft.AspNetCore.Hosting 計量會報告 ASP.NET Core 所接收 HTTP 要求的高階資訊:

計量:http.server.request.duration
名稱 金融工具類型 單位 (UCUM) 描述
http.server.request.duration 長條圖 s 測量輸入 HTTP 要求的持續時間。
屬性 類型 描述 範例 目前狀態
http.route string 相符的路由。 {controller}/{action}/{id?} 如果可用的話。
error.type string 描述作業結束時的錯誤類別。 timeout; name_resolution_error; 500 如果要求已結束且發生錯誤。
http.request.method string HTTP 要求方法。 GET; POST; HEAD 永遠
http.response.status_code int HTTP 回應狀態碼 200 如果已傳送一個。
network.protocol.version string network.protocol.name 中指定的通訊協定版本。 3.1.1 永遠
url.scheme string 識別已使用通訊協定的 URI 配置元件。 http; https 永遠
aspnetcore.request.is_unhandled 布林值 如果應用程式管線未處理要求,則為 True。 true 如果未處理要求。

用來處理輸入 HTTP 要求的時間,如 ASP.NET Core 的裝載層所測量。 基礎 Web 主機有下列項目後,時間測量就會開始:

  • 充分剖析輸入網路串流上的 HTTP 要求標頭,以識別新的要求。
  • 初始化內容資料結構,例如 HttpContext

時間會在下列時間結束:

  • ASP.NET Core 處理常式管線已完成執行。
  • 所有回應資料都已傳送。
  • 正在處置要求的內容資料結構。

使用 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.0。

計量:http.server.active_requests
名稱 金融工具類型 單位 (UCUM) 描述
http.server.active_requests UpDownCounter {request} 測量目前進行中的並行 HTTP 要求數目。
屬性 類型 描述 範例 目前狀態
http.request.method string HTTP 要求方法。 [1] GET; POST; HEAD 永遠
url.scheme string 識別已使用通訊協定的 URI 配置元件。 http; https 永遠

從此版本開始提供:.NET 8.0。

Microsoft.AspNetCore.Routing

Microsoft.AspNetCore.Routing 計量會報告路由 HTTP 要求至 ASP.NET Core 端點的相關資訊:

計量:aspnetcore.routing.match_attempts
名稱 金融工具類型 單位 (UCUM) 描述
aspnetcore.routing.match_attempts 計數器 {match_attempt} 嘗試與端點相符的要求數目。
屬性 類型 描述 範例 目前狀態
aspnetcore.routing.match_status string 比對結果 success; failure 永遠
aspnetcore.routing.is_fallback_route boolean 一個值,指出相符的路由是否為後援路由。 True 如果已成功比對路由。
http.route string 相符的路由 {controller}/{action}/{id?} 如果已成功比對路由。

從此版本開始提供:.NET 8.0。

Microsoft.AspNetCore.Diagnostics

Microsoft.AspNetCore.Diagnostics 計量會報告 ASP.NET Core 錯誤處理中介軟體的診斷資訊:

計量:aspnetcore.diagnostics.exceptions
名稱 金融工具類型 單位 (UCUM) 描述
aspnetcore.diagnostics.exceptions 計數器 {exception} 例外狀況處理中介軟體攔截到的例外狀況數目。
屬性 類型 描述 範例 目前狀態
aspnetcore.diagnostics.exception.result string ASP.NET Core 例外狀況中介軟體處理結果 handled; unhandled 永遠
aspnetcore.diagnostics.handler.type string 處理例外狀況之 IExceptionHandler 實作的完整型別名稱。 Contoso.MyHandler 如果此處理常式已處理例外狀況。
exception.type string 例外狀況型別的完整名稱。 System.OperationCanceledException; Contoso.MyException 永遠

從此版本開始提供:.NET 8.0。

Microsoft.AspNetCore.RateLimiting

Microsoft.AspNetCore.RateLimiting 計量會報告 ASP.NET Core 速率限制中介軟體的速率限制資訊:

計量:aspnetcore.rate_limiting.active_request_leases
名稱 金融工具類型 單位 (UCUM) 描述
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} 目前在保留速率限制租用之伺服器上為作用中的要求數目。
屬性 類型 描述 範例 目前狀態
aspnetcore.rate_limiting.policy string 速率限制原則名稱。 fixed; sliding; token 如果要求的相符端點具有速率限制原則。

從此版本開始提供:.NET 8.0。

計量:aspnetcore.rate_limiting.request_lease.duration
名稱 金融工具類型 單位 (UCUM) 描述
aspnetcore.rate_limiting.request_lease.duration 長條圖 s 伺服器上要求所保留之速率限制租用的持續時間。
屬性 類型 描述 範例 目前狀態
aspnetcore.rate_limiting.policy string 速率限制原則名稱。 fixed; sliding; token 如果要求的相符端點具有速率限制原則。

從此版本開始提供:.NET 8.0。

計量:aspnetcore.rate_limiting.queued_requests
名稱 金融工具類型 單位 (UCUM) 描述
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} 目前佇列等候取得速率限制租用的要求數目。
屬性 類型 描述 範例 目前狀態
aspnetcore.rate_limiting.policy string 速率限制原則名稱。 fixed; sliding; token 如果要求的相符端點具有速率限制原則。

從此版本開始提供:.NET 8.0。

計量:aspnetcore.rate_limiting.request.time_in_queue
名稱 金融工具類型 單位 (UCUM) 描述
aspnetcore.rate_limiting.request.time_in_queue 長條圖 s 要求花費在佇列中等候取得速率限制租用的時間。
屬性 類型 描述 範例 目前狀態
aspnetcore.rate_limiting.policy string 速率限制原則名稱。 fixed; sliding; token 如果要求的相符端點具有速率限制原則。
aspnetcore.rate_limiting.result string 速率限制結果會顯示已取得租用或包含拒絕原因。 acquired; request_canceled 永遠

從此版本開始提供:.NET 8.0。

計量:aspnetcore.rate_limiting.requests
名稱 金融工具類型 單位 (UCUM) 描述
aspnetcore.rate_limiting.requests 計數器 {request} 嘗試取得速率限制租用的要求數目。
屬性 類型 描述 範例 目前狀態
aspnetcore.rate_limiting.policy string 速率限制原則名稱。 fixed; sliding; token 如果要求的相符端點具有速率限制原則。
aspnetcore.rate_limiting.result string 速率限制結果會顯示已取得租用或包含拒絕原因。 acquired; request_canceled 永遠

從此版本開始提供:.NET 8.0。

Microsoft.AspNetCore.HeaderParsing

Microsoft.AspNetCore.HeaderParsing 計量會報告 ASP.NET Core 標頭剖析的相關資訊:

計量:aspnetcore.header_parsing.parse_errors
名稱 金融工具類型 單位 (UCUM) 描述
aspnetcore.header_parsing.parse_errors 計數器 {parse_error} 剖析 HTTP 要求標頭時發生的錯誤數目。
屬性 類型 描述 範例 目前狀態
aspnetcore.header_parsing.header.name string 標頭名稱。 Content-Type 永遠
error.type string 錯誤訊息。 Unable to parse media type value. 永遠

從此版本開始提供:.NET 8.0。

計量:aspnetcore.header_parsing.cache_accesses

計量只會針對支援快取的 HTTP 要求標頭剖析器發出。

名稱 金融工具類型 單位 (UCUM) 描述
aspnetcore.header_parsing.cache_accesses 計數器 {cache_access} 已存取快取儲存剖析標頭值的次數。
屬性 類型 描述 範例 目前狀態
aspnetcore.header_parsing.header.name string 標頭名稱。 Content-Type 永遠
aspnetcore.header_parsing.cache_access.type string 一個值,指出是否在快取中找到標頭的值。 Hit; Miss 永遠

從此版本開始提供:.NET 8.0。

Microsoft.AspNetCore.Server.Kestrel

Microsoft.AspNetCore.Server.Kestrel 計量會報告 ASP.NET Core Kestrel 網頁伺服器的 HTTP 連線資訊:

計量:kestrel.active_connections
名稱 金融工具類型 單位 (UCUM) 描述
kestrel.active_connections UpDownCounter {connection} 目前在伺服器上為作用中的連線數目。
屬性 類型 描述 範例 目前狀態
network.transport string OSI 傳輸層內含式通訊方法 tcp; unix 永遠
network.type string OSI 網路層或非 OSI 對等項。 ipv4; ipv6 如果傳輸為 tcpudp
server.address string 如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 example.com 永遠
server.port int 伺服器連接埠號碼 80; 8080; 443 如果傳輸為 tcpudp

從此版本開始提供:.NET 8.0。

計量:kestrel.connection.duration
名稱 金融工具類型 單位 (UCUM) 描述
kestrel.connection.duration 長條圖 s 伺服器上的連線持續時間。
屬性 類型 描述 範例 目前狀態
error.type 字串 描述連接結束的錯誤類型,或連接管線期間擲回未處理的例外狀況類型。 您可以在 Kestrel Web 伺服器計量的語意慣例中找到已知的連線錯誤。 connection_reset; invalid_request_headers; System.OperationCanceledException 如果連接以已知錯誤結束,或擲回例外狀況。
network.protocol.name 字串 OSI 應用程式層或非 OSI 對等項。 http; web_sockets 永遠
network.protocol.version string network.protocol.name 中指定的通訊協定版本。 1.1; 2 永遠
network.transport string OSI 傳輸層內含式通訊方法 tcp; unix 永遠
network.type string OSI 網路層或非 OSI 對等項。 ipv4; ipv6 如果傳輸為 tcpudp
server.address string 如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 example.com 永遠
server.port int 伺服器連接埠號碼 80; 8080; 443 如果傳輸為 tcpudp
tls.protocol.version string TLS 通訊協定版本。 1.2; 1.3 如果連線受到 TLS 保護。

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

從 .NET 9 開始,當連接以已知錯誤結束時, error.type 屬性值會設定為已知的錯誤類型。 您可以在 Kestrel Web 伺服器計量的語意慣例中找到已知的連線錯誤。

從 :.NET 8 開始提供。

計量:kestrel.rejected_connections
名稱 金融工具類型 單位 (UCUM) 描述
kestrel.rejected_connections 計數器 {connection} 伺服器拒絕的連線數目。
屬性 類型 描述 範例 目前狀態
network.transport string OSI 傳輸層內含式通訊方法 tcp; unix 永遠
network.type string OSI 網路層或非 OSI 對等項。 ipv4; ipv6 如果傳輸為 tcpudp
server.address string 如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 example.com 永遠
server.port int 伺服器連接埠號碼 80; 8080; 443 如果傳輸為 tcpudp

當目前作用中計數超過使用 MaxConcurrentConnections 設定的值時,會拒絕連線。

從此版本開始提供:.NET 8.0。

計量:kestrel.queued_connections
名稱 金融工具類型 單位 (UCUM) 描述
kestrel.queued_connections UpDownCounter {connection} 目前已排入佇列且正在等候啟動的連線數目。
屬性 類型 描述 範例 目前狀態
network.transport string OSI 傳輸層內含式通訊方法 tcp; unix 永遠
network.type string OSI 網路層或非 OSI 對等項。 ipv4; ipv6 如果傳輸為 tcpudp
server.address string 如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 example.com 永遠
server.port int 伺服器連接埠號碼 80; 8080; 443 如果傳輸為 tcpudp

從此版本開始提供:.NET 8.0。

計量:kestrel.queued_requests
名稱 金融工具類型 單位 (UCUM) 描述
kestrel.queued_requests UpDownCounter {request} 目前已排入佇列且正在等候啟動的多工連線 (HTTP/2 和 HTTP/3) 上的 HTTP 要求數目。
屬性 類型 描述 範例 目前狀態
network.protocol.name string OSI 應用程式層或非 OSI 對等項。 http; web_sockets 永遠
network.protocol.version string network.protocol.name 中指定的通訊協定版本。 1.1; 2 永遠
network.transport string OSI 傳輸層內含式通訊方法 tcp; unix 永遠
network.type string OSI 網路層或非 OSI 對等項。 ipv4; ipv6 如果傳輸為 tcpudp
server.address string 如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 example.com 永遠
server.port int 伺服器連接埠號碼 80; 8080; 443 如果傳輸為 tcpudp

從此版本開始提供:.NET 8.0。

計量:kestrel.upgraded_connections
名稱 金融工具類型 單位 (UCUM) 描述
kestrel.upgraded_connections UpDownCounter {connection} 目前升級的連線數目 (WebSockets)。
屬性 類型 描述 範例 目前狀態
network.transport string OSI 傳輸層內含式通訊方法 tcp; unix 永遠
network.type string OSI 網路層或非 OSI 對等項。 ipv4; ipv6 如果傳輸為 tcpudp
server.address string 如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 example.com 永遠
server.port int 伺服器連接埠號碼 80; 8080; 443 如果傳輸為 tcpudp

計數器只會追蹤 HTTP/1.1 連線。

從此版本開始提供:.NET 8.0。

計量:kestrel.tls_handshake.duration
名稱 金融工具類型 單位 (UCUM) 描述
kestrel.tls_handshake.duration 長條圖 s 伺服器上的 TLS 交握持續時間。
屬性 類型 描述 範例 目前狀態
error.type string 例外狀況型別的完整名稱。 System.OperationCanceledException; Contoso.MyException 如果擲回例外狀況。
network.transport string OSI 傳輸層內含式通訊方法 tcp; unix 永遠
network.type string OSI 網路層或非 OSI 對等項。 ipv4; ipv6 如果傳輸為 tcpudp
server.address string 如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 example.com 永遠
server.port int 伺服器連接埠號碼 80; 8080; 443 如果傳輸為 tcpudp
tls.protocol.version string TLS 通訊協定版本。 1.2; 1.3 如果連線受到 TLS 保護。

使用 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.0。

計量:kestrel.active_tls_handshakes
名稱 金融工具類型 單位 (UCUM) 描述
kestrel.active_tls_handshakes UpDownCounter {handshake} 伺服器上目前正在處理的 TLS 交握數目。
屬性 類型 描述 範例 目前狀態
network.transport string OSI 傳輸層內含式通訊方法 tcp; unix 永遠
network.type string OSI 網路層或非 OSI 對等項。 ipv4; ipv6 如果傳輸為 tcpudp
server.address string 如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 example.com 永遠
server.port int 伺服器連接埠號碼 80; 8080; 443 如果傳輸為 tcpudp

從此版本開始提供:.NET 8.0。

Microsoft.AspNetCore.Http.Connections

Microsoft.AspNetCore.Http.Connections 計量會報告 ASP.NET Core SignalR 的連線資訊:

計量:signalr.server.connection.duration
名稱 金融工具類型 單位 (UCUM) 描述
signalr.server.connection.duration 長條圖 s 伺服器上的連線持續時間。
屬性 類型 描述 範例 目前狀態
signalr.connection.status string SignalR HTTP 連線關閉狀態。 app_shutdown; timeout 永遠
signalr.transport string SignalR 傳輸類型 web_sockets; long_polling 永遠

從此版本開始提供:.NET 8.0。

Description
normal_closure 此連線已正常關閉。
timeout 連線因為逾時而關閉。
app_shutdown 因為應用程式正在關閉,所以連線已關閉。

signalr.transport 是下列其中一項:

通訊協定
server_sent_events 伺服器傳送的事件
long_polling 長輪詢
web_sockets WebSocket

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

從此版本開始提供:.NET 8.0。

計量:signalr.server.active_connections
名稱 金融工具類型 單位 (UCUM) 描述
signalr.server.active_connections UpDownCounter {connection} 目前在伺服器上為作用中的連線數目。
屬性 類型 描述 範例 目前狀態
signalr.connection.status string SignalR HTTP 連線關閉狀態。 app_shutdown; timeout 永遠
signalr.transport string SignalR 傳輸類型 web_sockets; long_polling 永遠

從此版本開始提供:.NET 8.0。