ASP.NET Core 計量
本文說明使用 System.Diagnostics.Metrics API 產生的內建 ASP.NET Core 計量。 如需以舊版 EventCounters API 為基礎的計量清單,請參閱此處。
Microsoft.AspNetCore.Hosting
Microsoft.AspNetCore.Hosting
計量會報告 ASP.NET Core 所接收 HTTP 要求的高階資訊:
計量:http.server.request.duration
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
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
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
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
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
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
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
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
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
aspnetcore.rate_limiting.policy |
string |
速率限制原則名稱。 |
fixed ; sliding ; token |
如果要求的相符端點具有速率限制原則。 |
從此版本開始提供:.NET 8.0。
計量:aspnetcore.rate_limiting.request_lease.duration
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
aspnetcore.rate_limiting.policy |
string |
速率限制原則名稱。 |
fixed ; sliding ; token |
如果要求的相符端點具有速率限制原則。 |
從此版本開始提供:.NET 8.0。
計量:aspnetcore.rate_limiting.queued_requests
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
aspnetcore.rate_limiting.policy |
string |
速率限制原則名稱。 |
fixed ; sliding ; token |
如果要求的相符端點具有速率限制原則。 |
從此版本開始提供:.NET 8.0。
計量:aspnetcore.rate_limiting.request.time_in_queue
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
aspnetcore.rate_limiting.policy |
string |
速率限制原則名稱。 |
fixed ; sliding ; token |
如果要求的相符端點具有速率限制原則。 |
aspnetcore.rate_limiting.result |
string |
速率限制結果會顯示已取得租用或包含拒絕原因。 |
acquired ; request_canceled |
永遠 |
從此版本開始提供:.NET 8.0。
計量:aspnetcore.rate_limiting.requests
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
aspnetcore.rate_limiting.policy |
string |
速率限制原則名稱。 |
fixed ; sliding ; token |
如果要求的相符端點具有速率限制原則。 |
aspnetcore.rate_limiting.result |
string |
速率限制結果會顯示已取得租用或包含拒絕原因。 |
acquired ; request_canceled |
永遠 |
從此版本開始提供:.NET 8.0。
Microsoft.AspNetCore.HeaderParsing
計量會報告 ASP.NET Core 標頭剖析的相關資訊:
名稱 |
金融工具類型 |
單位 (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。
計量只會針對支援快取的 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
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
network.transport |
string |
OSI 傳輸層或內含式通訊方法。 |
tcp ; unix |
永遠 |
network.type |
string |
OSI 網路層或非 OSI 對等項。 |
ipv4 ; ipv6 |
如果傳輸為 tcp 或 udp 。 |
server.address |
string |
如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 |
example.com |
永遠 |
server.port |
int |
伺服器連接埠號碼 |
80 ; 8080 ; 443 |
如果傳輸為 tcp 或 udp 。 |
從此版本開始提供:.NET 8.0。
計量:kestrel.connection.duration
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
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 |
如果傳輸為 tcp 或 udp 。 |
server.address |
string |
如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 |
example.com |
永遠 |
server.port |
int |
伺服器連接埠號碼 |
80 ; 8080 ; 443 |
如果傳輸為 tcp 或 udp 。 |
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
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
network.transport |
string |
OSI 傳輸層或內含式通訊方法。 |
tcp ; unix |
永遠 |
network.type |
string |
OSI 網路層或非 OSI 對等項。 |
ipv4 ; ipv6 |
如果傳輸為 tcp 或 udp 。 |
server.address |
string |
如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 |
example.com |
永遠 |
server.port |
int |
伺服器連接埠號碼 |
80 ; 8080 ; 443 |
如果傳輸為 tcp 或 udp 。 |
當目前作用中計數超過使用 MaxConcurrentConnections
設定的值時,會拒絕連線。
從此版本開始提供:.NET 8.0。
計量:kestrel.queued_connections
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
network.transport |
string |
OSI 傳輸層或內含式通訊方法。 |
tcp ; unix |
永遠 |
network.type |
string |
OSI 網路層或非 OSI 對等項。 |
ipv4 ; ipv6 |
如果傳輸為 tcp 或 udp 。 |
server.address |
string |
如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 |
example.com |
永遠 |
server.port |
int |
伺服器連接埠號碼 |
80 ; 8080 ; 443 |
如果傳輸為 tcp 或 udp 。 |
從此版本開始提供:.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 |
如果傳輸為 tcp 或 udp 。 |
server.address |
string |
如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 |
example.com |
永遠 |
server.port |
int |
伺服器連接埠號碼 |
80 ; 8080 ; 443 |
如果傳輸為 tcp 或 udp 。 |
從此版本開始提供:.NET 8.0。
計量:kestrel.upgraded_connections
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
network.transport |
string |
OSI 傳輸層或內含式通訊方法。 |
tcp ; unix |
永遠 |
network.type |
string |
OSI 網路層或非 OSI 對等項。 |
ipv4 ; ipv6 |
如果傳輸為 tcp 或 udp 。 |
server.address |
string |
如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 |
example.com |
永遠 |
server.port |
int |
伺服器連接埠號碼 |
80 ; 8080 ; 443 |
如果傳輸為 tcp 或 udp 。 |
計數器只會追蹤 HTTP/1.1 連線。
從此版本開始提供:.NET 8.0。
計量:kestrel.tls_handshake.duration
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
error.type |
string |
例外狀況型別的完整名稱。 |
System.OperationCanceledException ; Contoso.MyException |
如果擲回例外狀況。 |
network.transport |
string |
OSI 傳輸層或內含式通訊方法。 |
tcp ; unix |
永遠 |
network.type |
string |
OSI 網路層或非 OSI 對等項。 |
ipv4 ; ipv6 |
如果傳輸為 tcp 或 udp 。 |
server.address |
string |
如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 |
example.com |
永遠 |
server.port |
int |
伺服器連接埠號碼 |
80 ; 8080 ; 443 |
如果傳輸為 tcp 或 udp 。 |
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
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
network.transport |
string |
OSI 傳輸層或內含式通訊方法。 |
tcp ; unix |
永遠 |
network.type |
string |
OSI 網路層或非 OSI 對等項。 |
ipv4 ; ipv6 |
如果傳輸為 tcp 或 udp 。 |
server.address |
string |
如果在沒有反向 DNS 查閱的情況下可用則為伺服器位址網域名稱;否則為 IP 位址或 Unix 網域通訊端名稱。 |
example.com |
永遠 |
server.port |
int |
伺服器連接埠號碼 |
80 ; 8080 ; 443 |
如果傳輸為 tcp 或 udp 。 |
從此版本開始提供:.NET 8.0。
Microsoft.AspNetCore.Http.Connections
Microsoft.AspNetCore.Http.Connections
計量會報告 ASP.NET Core SignalR 的連線資訊:
計量:signalr.server.connection.duration
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
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
是下列其中一項:
由於此計量會追蹤連線持續時間,而且在理想情況下 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
屬性 |
類型 |
描述 |
範例 |
目前狀態 |
signalr.connection.status |
string |
SignalR HTTP 連線關閉狀態。 |
app_shutdown ; timeout |
永遠 |
signalr.transport |
string |
SignalR 傳輸類型 |
web_sockets ; long_polling |
永遠 |
從此版本開始提供:.NET 8.0。