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
Expand table
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
http.server.active_requests
UpDownCounter
{request}
Measures the number of concurrent HTTP requests that are currently in-flight.
Expand table
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
Expand table
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.
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
aspnetcore.header_parsing.parse_errors
Counter
{parse_error}
Number of errors that occurred when parsing HTTP request headers.
Expand table
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.
Expand table
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.
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.active_connections
UpDownCounter
{connection}
Number of connections that are currently active on the server.
Expand table
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
Expand table
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.rejected_connections
Counter
{connection}
Number of connections rejected by the server.
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.queued_connections
UpDownCounter
{connection}
Number of connections that are currently queued and are waiting to start.
Expand table
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
Expand table
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.
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.upgraded_connections
UpDownCounter
{connection}
Number of connections that are currently upgraded (WebSockets).
Expand table
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
Expand table
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.active_tls_handshakes
UpDownCounter
{handshake}
Number of TLS handshakes that are currently in progress on the server.
Expand table
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
Expand table
Expand table
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
.
Expand table
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:
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
signalr.server.active_connections
UpDownCounter
{connection}
Number of connections that are currently active on the server.
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
aspnetcore.authorization.attempts
Counter
{request}
The total number of requests for which authorization was attempted.
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
aspnetcore.authentication.authenticate.duration
Histogram
s
The authentication duration for a request.
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
aspnetcore.authentication.challenges
Counter
{request}
The total number of times a scheme is challenged.
Expand table
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
Expand table
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.
Expand table
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
Expand table
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.
Expand table
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
Expand table
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.
Expand table
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 .
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
Expand table
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
http.server.active_requests
UpDownCounter
{request}
Measures the number of concurrent HTTP requests that are currently in-flight.
Expand table
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
Expand table
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.
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
Expand table
Expand table
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
The Microsoft.AspNetCore.HeaderParsing
metrics report information about ASP.NET Core header parsing :
Expand table
Name
Instrument Type
Unit (UCUM)
Description
aspnetcore.header_parsing.parse_errors
Counter
{parse_error}
Number of errors that occurred when parsing HTTP request headers.
Expand table
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
The metric is emitted only for HTTP request header parsers that support caching.
Expand table
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.
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.active_connections
UpDownCounter
{connection}
Number of connections that are currently active on the server.
Expand table
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
Expand table
Expand table
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.
Metric: kestrel.rejected_connections
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.rejected_connections
Counter
{connection}
Number of connections rejected by the server.
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.queued_connections
UpDownCounter
{connection}
Number of connections that are currently queued and are waiting to start.
Expand table
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
Expand table
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.
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.upgraded_connections
UpDownCounter
{connection}
Number of connections that are currently upgraded (WebSockets).
Expand table
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
Expand table
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
kestrel.active_tls_handshakes
UpDownCounter
{handshake}
Number of TLS handshakes that are currently in progress on the server.
Expand table
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
Expand table
Expand table
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
Expand table
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:
Expand table
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
Expand table
Name
Instrument Type
Unit (UCUM)
Description
signalr.server.active_connections
UpDownCounter
{connection}
Number of connections that are currently active on the server.
Expand table
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