Edit

Share via


ASP.NET Core built-in metrics

This article describes the metrics built-in for ASP.NET Core produced using the System.Diagnostics.Metrics API. For a listing of metrics based on the older EventCounters API, see Available counters.

See Using ASP.NET Core metrics for information about how to collect, report, enrich, and test ASP.NET Core metrics

Microsoft.AspNetCore.Hosting

The Microsoft.AspNetCore.Hosting metrics report high-level information about HTTP requests received by ASP.NET Core:

Metric: http.server.request.duration

Name Instrument Type Unit (UCUM) Description
http.server.request.duration Histogram s Measures the duration of inbound HTTP requests.
Attribute Type Description Examples Presence
http.route string The matched route. {controller}/{action}/
{id?}
If it's available.
error.type string Describes a class of error the operation ended with. timeout; name_resolution_error; 500 If request has ended with an error.
http.request.method string HTTP request method. GET; POST; HEAD Always
http.response.status_code int HTTP response status code. 200 If one was sent.
network.protocol.version string Version of the protocol specified in network.protocol.name. 3.1.1 Always
url.scheme string The URI scheme component identifying the used protocol. http; https Always
aspnetcore.request.is_unhandled Boolean True when the request wasn't handled by the application pipeline. true If the request was unhandled.

The time used to handle an inbound HTTP request as measured at the hosting layer of ASP.NET Core. The time measurement starts once the underlying web host has:

  • Sufficiently parsed the HTTP request headers on the inbound network stream to identify the new request.
  • Initialized the context data structures such as the HttpContext.

The time ends when:

  • The ASP.NET Core handler pipeline is finished executing.
  • All response data has been sent.
  • The context data structures for the request are being disposed.

When using OpenTelemetry, the default buckets for this metric are set to [ 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 ].

Metric: http.server.active_requests

Name Instrument Type Unit (UCUM) Description
http.server.active_requests UpDownCounter {request} Measures the number of concurrent HTTP requests that are currently in-flight.
Attribute Type Description Examples Presence
http.request.method string HTTP request method. [1] GET; POST; HEAD Always
url.scheme string The URI scheme component identifying the used protocol. http; https Always

.

Microsoft.AspNetCore.Routing

The Microsoft.AspNetCore.Routing metrics report information about routing HTTP requests to ASP.NET Core endpoints:

Metric: aspnetcore.routing.match_attempts

Name Instrument Type Unit (UCUM) Description
aspnetcore.routing.match_attempts Counter {match_attempt} Number of requests that were attempted to be matched to an endpoint.
Attribute Type Description Examples Presence
aspnetcore.routing.match_status string Match result success; failure Always
aspnetcore.routing.is_fallback_route boolean A value that indicates whether the matched route is a fallback route. True If a route was successfully matched.
http.route string The matched route {controller}/{action}/
{id?}
If a route was successfully matched.

.

Microsoft.AspNetCore.Diagnostics

The Microsoft.AspNetCore.Diagnostics metrics report diagnostics information from ASP.NET Core error handling middleware:

Metric: aspnetcore.diagnostics.exceptions

Name Instrument Type Unit (UCUM) Description
aspnetcore.diagnostics.exceptions Counter {exception} Number of exceptions caught by exception handling middleware.
Attribute Type Description Examples Presence
aspnetcore.diagnostics.exception.result string ASP.NET Core exception middleware handling result handled; unhandled Always
aspnetcore.diagnostics.handler.type string Full type name of the IExceptionHandler implementation that handled the exception. Contoso.MyHandler If the exception was handled by this handler.
exception.type string The full name of exception type. System.OperationCanceledException; Contoso.MyException Always

.

Microsoft.AspNetCore.RateLimiting

The Microsoft.AspNetCore.RateLimiting metrics report rate limiting information from ASP.NET Core rate-limiting middleware:

Metric: aspnetcore.rate_limiting.active_request_leases

Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} Number of requests that are currently active on the server that hold a rate limiting lease.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.

.

Metric: aspnetcore.rate_limiting.request_lease.duration

Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.request_lease.duration Histogram s The duration of the rate limiting lease held by requests on the server.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.

.

Metric: aspnetcore.rate_limiting.queued_requests

Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} Number of requests that are currently queued waiting to acquire a rate limiting lease.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.

.

Metric: aspnetcore.rate_limiting.request.time_in_queue

Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.request.time_in_queue Histogram s The time a request spent in a queue waiting to acquire a rate limiting lease.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.
aspnetcore.rate_limiting.result string The rate limiting result shows whether lease was acquired or contains a rejection reason. acquired; request_canceled Always

.

Metric: aspnetcore.rate_limiting.requests

Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.requests Counter {request} Number of requests that tried to acquire a rate limiting lease.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.
aspnetcore.rate_limiting.result string The rate limiting result shows whether lease was acquired or contains a rejection reason. acquired; request_canceled Always

.

Microsoft.AspNetCore.HeaderParsing

The Microsoft.AspNetCore.HeaderParsing metrics report information about ASP.NET Core header parsing:

Metric: aspnetcore.header_parsing.parse_errors

Name Instrument Type Unit (UCUM) Description
aspnetcore.header_parsing.parse_errors Counter {parse_error} Number of errors that occurred when parsing HTTP request headers.
Attribute Type Description Examples Presence
aspnetcore.header_parsing.header.name string The header name. Content-Type Always
error.type string The error message. Unable to parse media type value. Always

.

Metric: aspnetcore.header_parsing.cache_accesses

The metric is emitted only for HTTP request header parsers that support caching.

Name Instrument Type Unit (UCUM) Description
aspnetcore.header_parsing.cache_accesses Counter {cache_access} Number of times a cache storing parsed header values was accessed.
Attribute Type Description Examples Presence
aspnetcore.header_parsing.header.name string The header name. Content-Type Always
aspnetcore.header_parsing.cache_access.type string A value indicating whether the header's value was found in the cache or not. Hit; Miss Always

.

Microsoft.AspNetCore.Server.Kestrel

The Microsoft.AspNetCore.Server.Kestrel metrics report HTTP connection information from ASP.NET Core Kestrel web server:

Metric: kestrel.active_connections

Name Instrument Type Unit (UCUM) Description
kestrel.active_connections UpDownCounter {connection} Number of connections that are currently active on the server.
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.

.

Metric: kestrel.connection.duration

Name Instrument Type Unit (UCUM) Description
kestrel.connection.duration Histogram s The duration of connections on the server.
Attribute Type Description Examples Presence
error.type string Describes a type of error the connection ended with, or the unhandled exception type thrown during the connection pipeline. Known connection errors can be found at Semantic Conventions for Kestrel web server metrics. connection_reset; invalid_request_headers; System.OperationCanceledException If the connection ended with a known error or an exception was thrown.
network.protocol.name string OSI application layer or non-OSI equivalent. http; web_sockets Always
network.protocol.version string Version of the protocol specified in network.protocol.name. 1.1; 2 Always
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.
tls.protocol.version string TLS protocol version. 1.2; 1.3 If the connection is secured with TLS.

As this metric is tracking the connection duration, and ideally http connections are used for multiple requests, the buckets should be longer than those used for request durations. For example, using [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] provides an upper bucket of 5 mins.

When a connection ends with a known error, the error.type attribute value is set to the known error type. Known connection errors can be found at Semantic Conventions for Kestrel web server metrics.

Metric: kestrel.rejected_connections

Name Instrument Type Unit (UCUM) Description
kestrel.rejected_connections Counter {connection} Number of connections rejected by the server.
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.

Connections are rejected when the currently active count exceeds the value configured with MaxConcurrentConnections.

.

Metric: kestrel.queued_connections

Name Instrument Type Unit (UCUM) Description
kestrel.queued_connections UpDownCounter {connection} Number of connections that are currently queued and are waiting to start.
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.

.

Metric: kestrel.queued_requests

Name Instrument Type Unit (UCUM) Description
kestrel.queued_requests UpDownCounter {request} Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.
Attribute Type Description Examples Presence
network.protocol.name string OSI application layer or non-OSI equivalent. http; web_sockets Always
network.protocol.version string Version of the protocol specified in network.protocol.name. 1.1; 2 Always
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.

.

Metric: kestrel.upgraded_connections

Name Instrument Type Unit (UCUM) Description
kestrel.upgraded_connections UpDownCounter {connection} Number of connections that are currently upgraded (WebSockets).
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.

The counter only tracks HTTP/1.1 connections.

.

Metric: kestrel.tls_handshake.duration

Name Instrument Type Unit (UCUM) Description
kestrel.tls_handshake.duration Histogram s The duration of TLS handshakes on the server.
Attribute Type Description Examples Presence
error.type string The full name of exception type. System.OperationCanceledException; Contoso.MyException If an exception was thrown.
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.
tls.protocol.version string TLS protocol version. 1.2; 1.3 If the connection is secured with TLS.

When using OpenTelemetry, the default buckets for this metic are set to [ 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 ].

.

Metric: kestrel.active_tls_handshakes

Name Instrument Type Unit (UCUM) Description
kestrel.active_tls_handshakes UpDownCounter {handshake} Number of TLS handshakes that are currently in progress on the server.
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.

.

Microsoft.AspNetCore.Http.Connections

The Microsoft.AspNetCore.Http.Connections metrics report connection information from ASP.NET Core SignalR:

Metric: signalr.server.connection.duration

Name Instrument Type Unit (UCUM) Description
signalr.server.connection.duration Histogram s The duration of connections on the server.
Attribute Type Description Examples Presence
signalr.connection.status string SignalR HTTP connection closure status. app_shutdown; timeout Always
signalr.transport string SignalR transport type web_sockets; long_polling Always

.

Value Description
normal_closure The connection was closed normally.
timeout The connection was closed due to a timeout.
app_shutdown The connection was closed because the app is shutting down.

signalr.transport is one of the following:

Value Protocol
server_sent_events server-sent events
long_polling Long Polling
web_sockets WebSocket

As this metric is tracking the connection duration, and ideally SignalR connections are durable, the buckets should be longer than those used for request durations. For example, using [0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] provides an upper bucket of 5 mins.

.

Metric: signalr.server.active_connections

Name Instrument Type Unit (UCUM) Description
signalr.server.active_connections UpDownCounter {connection} Number of connections that are currently active on the server.
Attribute Type Description Examples Presence
signalr.connection.status string SignalR HTTP connection closure status. app_shutdown; timeout Always
signalr.transport string SignalR transport type web_sockets; long_polling Always

.

Microsoft.AspNetCore.Authorization

The Microsoft.AspNetCore.Authorization metrics report information about Authorization attempts in ASP.NET Core apps:

Metric: aspnetcore.authorization.attempts

Name Instrument Type Unit (UCUM) Description
aspnetcore.authorization.attempts Counter {request} The total number of requests for which authorization was attempted.
Attribute Type Description Examples Presence
user.is_authenticated boolean Whether the request came from an authenticated user true Required
aspnetcore.authorization.policy string The name of the authorization policy. AtLeast21; EmployeeOnly Conditionally required if an authorization policy is used
aspnetcore.authorization.result string Whether the authorization succeeded or failed. success; failure Conditionally Required if an exception is not thrown during authorization
error.type string The full name of the exception type. System.InvalidOperationException; Contoso.MyException Conditionally Required if the request has ended with an error

.

Microsoft.AspNetCore.Authentication

The Microsoft.AspNetCore.Authentication metrics report information about Authentication in ASP.NET Core apps:

Metric: aspnetcore.authentication.authenticate.duration

Name Instrument Type Unit (UCUM) Description
aspnetcore.authentication.authenticate.duration Histogram s The authentication duration for a request.
Attribute Type Description Examples Presence
aspnetcore.authentication.result string The authentication result. success; failure; none; _OTHER Conditionally Required if the request did not end with an error
aspnetcore.authentication.scheme string The name of the authentication scheme. Bearer; Cookies Conditionally Required if the request did not end with an error
error.type string The full name of the exception type. System.InvalidOperationException; Contoso.MyException Conditionally Required if authentication failed or the request has ended with an error

.

Metric: aspnetcore.authentication.challenges

Name Instrument Type Unit (UCUM) Description
aspnetcore.authentication.challenges Counter {request} The total number of times a scheme is challenged.
Attribute Type Description Examples Presence
aspnetcore.authentication.scheme string The name of the authentication scheme. Bearer; Cookies Conditionally Required if the request did not end with an error
error.type string The full name of the exception type. System.InvalidOperationException; Contoso.MyException Conditionally Required if the request has ended with an error

.

Metric: aspnetcore.authentication.forbids

Name Instrument Type Unit (UCUM) Description
aspnetcore.authentication.forbids Counter {request} The total number of times an authenticated user attempts to access a resource they aren't permitted to access.
Attribute Type Description Examples Presence
aspnetcore.authentication.scheme string The name of the authentication scheme. Bearer; Cookies Conditionally Required if the request did not end with an error
error.type string The full name of the exception type. System.InvalidOperationException; Contoso.MyException Conditionally Required if the request has ended with an error

.

Metric: aspnetcore.authentication.sign_ins

Name Instrument Type Unit (UCUM) Description
aspnetcore.authentication.sign_ins Counter {request} The total number of times a principal is signed in with a scheme.
Attribute Type Description Examples Presence
aspnetcore.authentication.scheme string The name of the authentication scheme. Bearer; Cookies Conditionally Required if the request did not end with an error
error.type string The full name of the exception type. System.InvalidOperationException; Contoso.MyException Conditionally Required if the request has ended with an error

.

Metric: aspnetcore.authentication.sign_outs

Name Instrument Type Unit (UCUM) Description
aspnetcore.authentication.sign_outs Counter {request} The total number of times a principal is signed out with a scheme.
Attribute Type Description Examples Presence
aspnetcore.authentication.scheme string The name of the authentication scheme. Bearer; Cookies Conditionally Required if the request did not end with an error
error.type string The full name of the exception type. System.InvalidOperationException; Contoso.MyException Conditionally Required if the request has ended with an error

This article describes the metrics built-in for ASP.NET Core produced using the System.Diagnostics.Metrics API. For a listing of metrics based on the older EventCounters API, see Available counters.

Tip

For more information about how to collect, report, enrich, and test ASP.NET Core metrics, see Using ASP.NET Core metrics.

Microsoft.AspNetCore.Hosting

The Microsoft.AspNetCore.Hosting metrics report high-level information about HTTP requests received by ASP.NET Core:

Metric: http.server.request.duration
Name Instrument Type Unit (UCUM) Description
http.server.request.duration Histogram s Measures the duration of inbound HTTP requests.
Attribute Type Description Examples Presence
http.route string The matched route. {controller}/{action}/{id?} If it's available.
error.type string Describes a class of error the operation ended with. timeout; name_resolution_error; 500 If request has ended with an error.
http.request.method string HTTP request method. GET; POST; HEAD Always
http.response.status_code int HTTP response status code. 200 If one was sent.
network.protocol.version string Version of the protocol specified in network.protocol.name. 3.1.1 Always
url.scheme string The URI scheme component identifying the used protocol. http; https Always
aspnetcore.request.is_unhandled Boolean True when the request wasn't handled by the application pipeline. true If the request was unhandled.

The time used to handle an inbound HTTP request as measured at the hosting layer of ASP.NET Core. The time measurement starts once the underlying web host has:

  • Sufficiently parsed the HTTP request headers on the inbound network stream to identify the new request.
  • Initialized the context data structures such as the HttpContext.

The time ends when:

  • The ASP.NET Core handler pipeline is finished executing.
  • All response data has been sent.
  • The context data structures for the request are being disposed.

When using OpenTelemetry, the default buckets for this metric are set to [ 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 ].

Metric: http.server.active_requests
Name Instrument Type Unit (UCUM) Description
http.server.active_requests UpDownCounter {request} Measures the number of concurrent HTTP requests that are currently in-flight.
Attribute Type Description Examples Presence
http.request.method string HTTP request method. [1] GET; POST; HEAD Always
url.scheme string The URI scheme component identifying the used protocol. http; https Always

Microsoft.AspNetCore.Routing

The Microsoft.AspNetCore.Routing metrics report information about routing HTTP requests to ASP.NET Core endpoints:

Metric: aspnetcore.routing.match_attempts
Name Instrument Type Unit (UCUM) Description
aspnetcore.routing.match_attempts Counter {match_attempt} Number of requests that were attempted to be matched to an endpoint.
Attribute Type Description Examples Presence
aspnetcore.routing.match_status string Match result success; failure Always
aspnetcore.routing.is_fallback_route boolean A value that indicates whether the matched route is a fallback route. True If a route was successfully matched.
http.route string The matched route {controller}/{action}/{id?} If a route was successfully matched.

Microsoft.AspNetCore.Diagnostics

The Microsoft.AspNetCore.Diagnostics metrics report diagnostics information from ASP.NET Core error handling middleware:

Metric: aspnetcore.diagnostics.exceptions
Name Instrument Type Unit (UCUM) Description
aspnetcore.diagnostics.exceptions Counter {exception} Number of exceptions caught by exception handling middleware.
Attribute Type Description Examples Presence
aspnetcore.diagnostics.exception.result string ASP.NET Core exception middleware handling result handled; unhandled Always
aspnetcore.diagnostics.handler.type string Full type name of the IExceptionHandler implementation that handled the exception. Contoso.MyHandler If the exception was handled by this handler.
exception.type string The full name of exception type. System.OperationCanceledException; Contoso.MyException Always

Microsoft.AspNetCore.RateLimiting

The Microsoft.AspNetCore.RateLimiting metrics report rate limiting information from ASP.NET Core rate-limiting middleware:

Metric: aspnetcore.rate_limiting.active_request_leases
Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} Number of requests that are currently active on the server that hold a rate limiting lease.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.
Metric: aspnetcore.rate_limiting.request_lease.duration
Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.request_lease.duration Histogram s The duration of the rate limiting lease held by requests on the server.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.
Metric: aspnetcore.rate_limiting.queued_requests
Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} Number of requests that are currently queued waiting to acquire a rate limiting lease.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.
Metric: aspnetcore.rate_limiting.request.time_in_queue
Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.request.time_in_queue Histogram s The time a request spent in a queue waiting to acquire a rate limiting lease.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.
aspnetcore.rate_limiting.result string The rate limiting result shows whether lease was acquired or contains a rejection reason. acquired; request_canceled Always
Metric: aspnetcore.rate_limiting.requests
Name Instrument Type Unit (UCUM) Description
aspnetcore.rate_limiting.requests Counter {request} Number of requests that tried to acquire a rate limiting lease.
Attribute Type Description Examples Presence
aspnetcore.rate_limiting.policy string Rate limiting policy name. fixed; sliding; token If the matched endpoint for the request had a rate-limiting policy.
aspnetcore.rate_limiting.result string The rate limiting result shows whether lease was acquired or contains a rejection reason. acquired; request_canceled Always

Microsoft.AspNetCore.HeaderParsing

The Microsoft.AspNetCore.HeaderParsing metrics report information about ASP.NET Core header parsing:

Metric: aspnetcore.header_parsing.parse_errors
Name Instrument Type Unit (UCUM) Description
aspnetcore.header_parsing.parse_errors Counter {parse_error} Number of errors that occurred when parsing HTTP request headers.
Attribute Type Description Examples Presence
aspnetcore.header_parsing.header.name string The header name. Content-Type Always
error.type string The error message. Unable to parse media type value. Always
Metric: aspnetcore.header_parsing.cache_accesses

The metric is emitted only for HTTP request header parsers that support caching.

Name Instrument Type Unit (UCUM) Description
aspnetcore.header_parsing.cache_accesses Counter {cache_access} Number of times a cache storing parsed header values was accessed.
Attribute Type Description Examples Presence
aspnetcore.header_parsing.header.name string The header name. Content-Type Always
aspnetcore.header_parsing.cache_access.type string A value indicating whether the header's value was found in the cache or not. Hit; Miss Always

Microsoft.AspNetCore.Server.Kestrel

The Microsoft.AspNetCore.Server.Kestrel metrics report HTTP connection information from ASP.NET Core Kestrel web server:

Metric: kestrel.active_connections
Name Instrument Type Unit (UCUM) Description
kestrel.active_connections UpDownCounter {connection} Number of connections that are currently active on the server.
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.
Metric: kestrel.connection.duration
Name Instrument Type Unit (UCUM) Description
kestrel.connection.duration Histogram s The duration of connections on the server.
Attribute Type Description Examples Presence
error.type string Describes a type of error the connection ended with, or the unhandled exception type thrown during the connection pipeline. Known connection errors can be found at Semantic Conventions for Kestrel web server metrics. connection_reset; invalid_request_headers; System.OperationCanceledException If the connection ended with a known error or an exception was thrown.
network.protocol.name string OSI application layer or non-OSI equivalent. http; web_sockets Always
network.protocol.version string Version of the protocol specified in network.protocol.name. 1.1; 2 Always
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.
tls.protocol.version string TLS protocol version. 1.2; 1.3 If the connection is secured with TLS.

As this metric is tracking the connection duration, and ideally http connections are used for multiple requests, the buckets should be longer than those used for request durations. For example, using [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] provides an upper bucket of 5 mins.

When a connection ends with a known error, the error.type attribute value is set to the known error type. Known connection errors can be found at Semantic Conventions for Kestrel web server metrics.

Metric: kestrel.rejected_connections
Name Instrument Type Unit (UCUM) Description
kestrel.rejected_connections Counter {connection} Number of connections rejected by the server.
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.

Connections are rejected when the currently active count exceeds the value configured with MaxConcurrentConnections.

Metric: kestrel.queued_connections
Name Instrument Type Unit (UCUM) Description
kestrel.queued_connections UpDownCounter {connection} Number of connections that are currently queued and are waiting to start.
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.
Metric: kestrel.queued_requests
Name Instrument Type Unit (UCUM) Description
kestrel.queued_requests UpDownCounter {request} Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.
Attribute Type Description Examples Presence
network.protocol.name string OSI application layer or non-OSI equivalent. http; web_sockets Always
network.protocol.version string Version of the protocol specified in network.protocol.name. 1.1; 2 Always
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.
Metric: kestrel.upgraded_connections
Name Instrument Type Unit (UCUM) Description
kestrel.upgraded_connections UpDownCounter {connection} Number of connections that are currently upgraded (WebSockets).
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.

The counter only tracks HTTP/1.1 connections.

Metric: kestrel.tls_handshake.duration
Name Instrument Type Unit (UCUM) Description
kestrel.tls_handshake.duration Histogram s The duration of TLS handshakes on the server.
Attribute Type Description Examples Presence
error.type string The full name of exception type. System.OperationCanceledException; Contoso.MyException If an exception was thrown.
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.
tls.protocol.version string TLS protocol version. 1.2; 1.3 If the connection is secured with TLS.

When using OpenTelemetry, the default buckets for this metic are set to [ 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 ].

Metric: kestrel.active_tls_handshakes
Name Instrument Type Unit (UCUM) Description
kestrel.active_tls_handshakes UpDownCounter {handshake} Number of TLS handshakes that are currently in progress on the server.
Attribute Type Description Examples Presence
network.transport string OSI transport layer or inter-process communication method. tcp; unix Always
network.type string OSI network layer or non-OSI equivalent. ipv4; ipv6 If the transport is tcp or udp.
server.address string Server address domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. example.com Always
server.port int Server port number 80; 8080; 443 If the transport is tcp or udp.

Microsoft.AspNetCore.Http.Connections

The Microsoft.AspNetCore.Http.Connections metrics report connection information from ASP.NET Core SignalR:

Metric: signalr.server.connection.duration
Name Instrument Type Unit (UCUM) Description
signalr.server.connection.duration Histogram s The duration of connections on the server.
Attribute Type Description Examples Presence
signalr.connection.status string SignalR HTTP connection closure status. app_shutdown; timeout Always
signalr.transport string SignalR transport type web_sockets; long_polling Always
Value Description
normal_closure The connection was closed normally.
timeout The connection was closed due to a timeout.
app_shutdown The connection was closed because the app is shutting down.

signalr.transport is one of the following:

Value Protocol
server_sent_events server-sent events
long_polling Long Polling
web_sockets WebSocket

As this metric is tracking the connection duration, and ideally SignalR connections are durable, the buckets should be longer than those used for request durations. For example, using [0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] provides an upper bucket of 5 mins.

Metric: signalr.server.active_connections
Name Instrument Type Unit (UCUM) Description
signalr.server.active_connections UpDownCounter {connection} Number of connections that are currently active on the server.
Attribute Type Description Examples Presence
signalr.connection.status string SignalR HTTP connection closure status. app_shutdown; timeout Always
signalr.transport string SignalR transport type web_sockets; long_polling Always