Compartir a través de


Métricas de ASP.NET Core

En este artículo se describen las métricas integradas para ASP.NET Core generadas mediante la API System.Diagnostics.Metrics. Para obtener una lista de métricas basadas en la API EventCounters anterior, consulte aquí.

Sugerencia

Para más información sobre cómo recopilar, notificar, enriquecer y probar métricas de ASP.NET Core, vea Uso de métricas de ASP.NET Core.

Microsoft.AspNetCore.Hosting

Las métricas Microsoft.AspNetCore.Hosting notifican información de alto nivel sobre las solicitudes HTTP recibidas por ASP.NET Core:

Métrica: http.server.request.duration
Nombre Tipo de instrumento Unidad (UCUM) Descripción
http.server.request.duration Histograma s Mide la duración de las solicitudes HTTP entrantes.
Atributo Tipo Descripción Ejemplos Presencia
http.route cadena Ruta coincidente. {controller}/{action}/{id?} Si está disponible.
error.type cadena Describe una clase de error con que finalizó la operación. timeout; name_resolution_error; 500 Si la solicitud ha finalizado con un error.
http.request.method cadena Método de solicitud HTTP. GET; POST; HEAD Siempre
http.response.status_code int Código de estado de respuesta HTTP. 200 Si se hizo un envío.
network.protocol.version string Versión del protocolo especificado en network.protocol.name. 3.1.1 Siempre
url.scheme cadena Componente de esquema de URI que identifica el protocolo usado. http; https Siempre
aspnetcore.request.is_unhandled Booleano Verdadero cuando la canalización de la aplicación no controla la solicitud. true Si la solicitud no se ha controlado.

El tiempo usado para controlar una solicitud HTTP entrante como se mide en la capa de hospedaje de ASP.NET Core. La medida de tiempo se inicia una vez que el host web subyacente:

  • Ha analizado suficientemente los encabezados de solicitud HTTP en el flujo de red entrante para identificar la nueva solicitud.
  • Ha inicializado las estructuras de datos de contexto, como HttpContext.

El tiempo finaliza cuando:

  • La canalización del controlador de ASP.NET Core ha terminado de ejecutarse.
  • Se han enviado todos los datos de respuesta.
  • Se han eliminado las estructuras de datos de contexto de la solicitud.

Cuando se usa OpenTelemetry, los cubos predeterminados para esta métrica se establecen en [ 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 ].

Disponible a partir de: .NET 8.0.

Métrica: http.server.active_requests
Nombre Tipo de instrumento Unidad (UCUM) Descripción
http.server.active_requests UpDownCounter {request} Mide el número de solicitudes HTTP simultáneas que están actualmente en curso.
Atributo Tipo Descripción Ejemplos Presencia
http.request.method cadena Método de solicitud HTTP. [1] GET; POST; HEAD Siempre
url.scheme cadena Componente de esquema de URI que identifica el protocolo usado. http; https Siempre

Disponible a partir de: .NET 8.0.

Microsoft.AspNetCore.Routing

Las métricas Microsoft.AspNetCore.Routing notifican información sobre el enrutamiento de solicitudes HTTP a puntos de conexión de ASP.NET Core:

Métrica: aspnetcore.routing.match_attempts
Nombre Tipo de instrumento Unidad (UCUM) Descripción
aspnetcore.routing.match_attempts Contador {match_attempt} Número de solicitudes que se intentaron hacer coincidir con un punto de conexión.
Atributo Tipo Descripción Ejemplos Presencia
aspnetcore.routing.match_status cadena Resultado de coincidencia success; failure Siempre
aspnetcore.routing.is_fallback_route boolean Valor que indica si la ruta coincidente es una ruta de reserva. True Si una ruta coincide correctamente.
http.route cadena Ruta coincidente. {controller}/{action}/{id?} Si una ruta coincide correctamente.

Disponible a partir de: .NET 8.0.

Microsoft.AspNetCore.Diagnostics

Las métricas Microsoft.AspNetCore.Diagnostics notifican información de diagnóstico del middleware de control de errores de ASP.NET Core:

Métrica: aspnetcore.diagnostics.exceptions
Nombre Tipo de instrumento Unidad (UCUM) Descripción
aspnetcore.diagnostics.exceptions Contador {exception} Número de excepciones detectadas por el middleware de control de excepciones.
Atributo Tipo Descripción Ejemplos Presencia
aspnetcore.diagnostics.exception.result cadena Resultado del control del middleware de excepciones de ASP.NET Core handled; unhandled Siempre
aspnetcore.diagnostics.handler.type cadena Nombre de tipo completo de la implementación IExceptionHandler que controló la excepción. Contoso.MyHandler Si este controlador controló la excepción.
exception.type cadena Nombre completo del tipo de excepción. System.OperationCanceledException; Contoso.MyException Siempre

Disponible a partir de: .NET 8.0.

Microsoft.AspNetCore.RateLimiting

Las métricas Microsoft.AspNetCore.RateLimiting notifican información de limitación de velocidad del middleware de limitación de velocidad de ASP.NET Core:

Métrica: aspnetcore.rate_limiting.active_request_leases
Nombre Tipo de instrumento Unidad (UCUM) Descripción
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} Número de solicitudes que están activas actualmente en el servidor que contienen una concesión de limitación de velocidad.
Atributo Tipo Descripción Ejemplos Presencia
aspnetcore.rate_limiting.policy cadena Nombre de directiva de limitación de velocidad. fixed; sliding; token Si el punto de conexión coincidente de la solicitud tenía una directiva de limitación de velocidad.

Disponible a partir de: .NET 8.0.

Métrica: aspnetcore.rate_limiting.request_lease.duration
Nombre Tipo de instrumento Unidad (UCUM) Descripción
aspnetcore.rate_limiting.request_lease.duration Histograma s Duración de la concesión de limitación de velocidad mantenida por las solicitudes en el servidor.
Atributo Tipo Descripción Ejemplos Presencia
aspnetcore.rate_limiting.policy cadena Nombre de directiva de limitación de velocidad. fixed; sliding; token Si el punto de conexión coincidente de la solicitud tenía una directiva de limitación de velocidad.

Disponible a partir de: .NET 8.0.

Métrica: aspnetcore.rate_limiting.queued_requests
Nombre Tipo de instrumento Unidad (UCUM) Descripción
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} Número de solicitudes en cola que están actualmente en cola para adquirir una concesión de limitación de velocidad.
Atributo Tipo Descripción Ejemplos Presencia
aspnetcore.rate_limiting.policy cadena Nombre de directiva de limitación de velocidad. fixed; sliding; token Si el punto de conexión coincidente de la solicitud tenía una directiva de limitación de velocidad.

Disponible a partir de: .NET 8.0.

Métrica: aspnetcore.rate_limiting.request.time_in_queue
Nombre Tipo de instrumento Unidad (UCUM) Descripción
aspnetcore.rate_limiting.request.time_in_queue Histograma s El tiempo que una solicitud pasó en una cola en espera de adquirir una concesión de limitación de velocidad.
Atributo Tipo Descripción Ejemplos Presencia
aspnetcore.rate_limiting.policy cadena Nombre de directiva de limitación de velocidad. fixed; sliding; token Si el punto de conexión coincidente de la solicitud tenía una directiva de limitación de velocidad.
aspnetcore.rate_limiting.result cadena El resultado de limitación de velocidad muestra si se adquirió la concesión o contiene un motivo de rechazo. acquired; request_canceled Siempre

Disponible a partir de: .NET 8.0.

Métrica: aspnetcore.rate_limiting.requests
Nombre Tipo de instrumento Unidad (UCUM) Descripción
aspnetcore.rate_limiting.requests Contador {request} Número de solicitudes que intentaron adquirir una concesión de limitación de velocidad.
Atributo Tipo Descripción Ejemplos Presencia
aspnetcore.rate_limiting.policy cadena Nombre de directiva de limitación de velocidad. fixed; sliding; token Si el punto de conexión coincidente de la solicitud tenía una directiva de limitación de velocidad.
aspnetcore.rate_limiting.result cadena El resultado de limitación de velocidad muestra si se adquirió la concesión o contiene un motivo de rechazo. acquired; request_canceled Siempre

Disponible a partir de: .NET 8.0.

Microsoft.AspNetCore.HeaderParsing

Las métricas Microsoft.AspNetCore.HeaderParsing notifican información sobre el análisis de encabezados de ASP.NET Core:

Métrica: aspnetcore.header_parsing.parse_errors
Nombre Tipo de instrumento Unidad (UCUM) Descripción
aspnetcore.header_parsing.parse_errors Contador {parse_error} Número de errores que se produjeron al analizar encabezados de solicitud HTTP.
Attribute Tipo Descripción Ejemplos Presencia
aspnetcore.header_parsing.header.name cadena Nombre del encabezado. Content-Type Siempre
error.type cadena El mensaje de error. Unable to parse media type value. Siempre

Disponible a partir de: .NET 8.0.

Métrica: aspnetcore.header_parsing.cache_accesses

La métrica solo se emite para aquellos analizadores de encabezados de solicitud HTTP que admiten el almacenamiento en caché.

Nombre Tipo de instrumento Unidad (UCUM) Descripción
aspnetcore.header_parsing.cache_accesses Contador {cache_access} Número de veces que se ha accedido a una caché que almacena valores de encabezados analizados.
Attribute Tipo Descripción Ejemplos Presencia
aspnetcore.header_parsing.header.name cadena Nombre del encabezado. Content-Type Siempre
aspnetcore.header_parsing.cache_access.type cadena Valor que indica si el valor del encabezado se encontró en la memoria caché o no. Hit; Miss Siempre

Disponible a partir de: .NET 8.0.

Microsoft.AspNetCore.Server.Kestrel

Las métricas Microsoft.AspNetCore.Server.Kestrel notifican información de conexión HTTP del servidor web Kestrel de ASP.NET Core:

Métrica: kestrel.active_connections
Nombre Tipo de instrumento Unidad (UCUM) Descripción
kestrel.active_connections UpDownCounter {connection} Número de conexiones actualmente activas en el servidor.
Atributo Tipo Descripción Ejemplos Presencia
network.transport cadena Capa de transporte OSI o método de comunicación entre procesos. tcp; unix Siempre
network.type cadena Capa de red OSI o equivalente que no es de OSI. ipv4; ipv6 Si el transporte es tcp o udp.
server.address cadena Nombre de dominio de dirección del servidor si está disponible sin búsqueda inversa de DNS; de lo contrario, dirección IP o nombre del socket de dominio de Unix. example.com Siempre
server.port int Número de puerto del servidor 80; 8080; 443 Si el transporte es tcp o udp.

Disponible a partir de: .NET 8.0.

Métrica: kestrel.connection.duration
Nombre Tipo de instrumento Unidad (UCUM) Descripción
kestrel.connection.duration Histograma s Duración de las conexiones en el servidor.
Atributo Tipo Descripción Ejemplos Presencia
error.type cadena Nombre completo del tipo de excepción. System.OperationCanceledException; Contoso.MyException Si se produjo una excepción.
network.protocol.name cadena Capa de aplicación OSI o equivalente que no es de OSI. http; web_sockets Siempre
network.protocol.version cadena Versión del protocolo especificado en network.protocol.name. 1.1; 2 Siempre
network.transport cadena Capa de transporte OSI o método de comunicación entre procesos. tcp; unix Siempre
network.type cadena Capa de red OSI o equivalente que no es de OSI. ipv4; ipv6 Si el transporte es tcp o udp.
server.address cadena Nombre de dominio de dirección del servidor si está disponible sin búsqueda inversa de DNS; de lo contrario, dirección IP o nombre del socket de dominio de Unix. example.com Siempre
server.port int Número de puerto del servidor 80; 8080; 443 Si el transporte es tcp o udp.
tls.protocol.version cadena Versión del protocolo TLS. 1.2; 1.3 Si la conexión está protegida con TLS.

Dado que esta métrica realiza un seguimiento de la duración de la conexión e, idealmente, las conexiones HTTP se usan para varias solicitudes, los cubos deben ser más largos que los usados durante las solicitudes. Por ejemplo, el uso de [ 0,01, 0,02, 0,05, 0,1, 0,2, 0,5, 1, 2, 5, 10, 30, 60, 120, 300 ] proporciona un cubo superior de 5 minutos.

Disponible a partir de: .NET 8.0.

Métrica: kestrel.rejected_connections
Nombre Tipo de instrumento Unidad (UCUM) Descripción
kestrel.rejected_connections Contador {connection} Número de conexiones rechazadas por el servidor.
Atributo Tipo Descripción Ejemplos Presencia
network.transport cadena Capa de transporte OSI o método de comunicación entre procesos. tcp; unix Siempre
network.type cadena Capa de red OSI o equivalente que no es de OSI. ipv4; ipv6 Si el transporte es tcp o udp.
server.address cadena Nombre de dominio de dirección del servidor si está disponible sin búsqueda inversa de DNS; de lo contrario, dirección IP o nombre del socket de dominio de Unix. example.com Siempre
server.port int Número de puerto del servidor 80; 8080; 443 Si el transporte es tcp o udp.

Las conexiones se rechazan cuando el recuento activo supera el valor configurado con MaxConcurrentConnections.

Disponible a partir de: .NET 8.0.

Métrica: kestrel.queued_connections
Nombre Tipo de instrumento Unidad (UCUM) Descripción
kestrel.queued_connections UpDownCounter {connection} Número de conexiones que están actualmente en cola y que están esperando iniciarse.
Atributo Tipo Descripción Ejemplos Presencia
network.transport cadena Capa de transporte OSI o método de comunicación entre procesos. tcp; unix Siempre
network.type cadena Capa de red OSI o equivalente que no es de OSI. ipv4; ipv6 Si el transporte es tcp o udp.
server.address cadena Nombre de dominio de dirección del servidor si está disponible sin búsqueda inversa de DNS; de lo contrario, dirección IP o nombre del socket de dominio de Unix. example.com Siempre
server.port int Número de puerto del servidor 80; 8080; 443 Si el transporte es tcp o udp.

Disponible a partir de: .NET 8.0.

Métrica: kestrel.queued_requests
Nombre Tipo de instrumento Unidad (UCUM) Descripción
kestrel.queued_requests UpDownCounter {request} Número de solicitudes HTTP en conexiones multiplexadas (HTTP/2 y HTTP/3) que están actualmente en cola y esperando iniciarse.
Atributo Tipo Descripción Ejemplos Presencia
network.protocol.name cadena Capa de aplicación OSI o equivalente que no es de OSI. http; web_sockets Siempre
network.protocol.version cadena Versión del protocolo especificado en network.protocol.name. 1.1; 2 Siempre
network.transport cadena Capa de transporte OSI o método de comunicación entre procesos. tcp; unix Siempre
network.type cadena Capa de red OSI o equivalente que no es de OSI. ipv4; ipv6 Si el transporte es tcp o udp.
server.address cadena Nombre de dominio de dirección del servidor si está disponible sin búsqueda inversa de DNS; de lo contrario, dirección IP o nombre del socket de dominio de Unix. example.com Siempre
server.port int Número de puerto del servidor 80; 8080; 443 Si el transporte es tcp o udp.

Disponible a partir de: .NET 8.0.

Métrica: kestrel.upgraded_connections
Nombre Tipo de instrumento Unidad (UCUM) Descripción
kestrel.upgraded_connections UpDownCounter {connection} Número de conexiones actualizadas actualmente (WebSockets).
Atributo Tipo Descripción Ejemplos Presencia
network.transport cadena Capa de transporte OSI o método de comunicación entre procesos. tcp; unix Siempre
network.type cadena Capa de red OSI o equivalente que no es de OSI. ipv4; ipv6 Si el transporte es tcp o udp.
server.address cadena Nombre de dominio de dirección del servidor si está disponible sin búsqueda inversa de DNS; de lo contrario, dirección IP o nombre del socket de dominio de Unix. example.com Siempre
server.port int Número de puerto del servidor 80; 8080; 443 Si el transporte es tcp o udp.

El contador solo realiza un seguimiento de las conexiones HTTP/1.1.

Disponible a partir de: .NET 8.0.

Métrica: kestrel.tls_handshake.duration
Nombre Tipo de instrumento Unidad (UCUM) Descripción
kestrel.tls_handshake.duration Histograma s Duración de los protocolos de enlace TLS en el servidor.
Atributo Tipo Descripción Ejemplos Presencia
error.type cadena Nombre completo del tipo de excepción. System.OperationCanceledException; Contoso.MyException Si se produjo una excepción.
network.transport cadena Capa de transporte OSI o método de comunicación entre procesos. tcp; unix Siempre
network.type cadena Capa de red OSI o equivalente que no es de OSI. ipv4; ipv6 Si el transporte es tcp o udp.
server.address cadena Nombre de dominio de dirección del servidor si está disponible sin búsqueda inversa de DNS; de lo contrario, dirección IP o nombre del socket de dominio de Unix. example.com Siempre
server.port int Número de puerto del servidor 80; 8080; 443 Si el transporte es tcp o udp.
tls.protocol.version cadena Versión del protocolo TLS. 1.2; 1.3 Si la conexión está protegida con TLS.

Cuando se usa OpenTelemetry, los cubos predeterminados para esta métrica se establecen en [ 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 ].

Disponible a partir de: .NET 8.0.

Métrica: kestrel.active_tls_handshakes
Nombre Tipo de instrumento Unidad (UCUM) Descripción
kestrel.active_tls_handshakes UpDownCounter {handshake} Número de protocolos de enlace TLS que están actualmente en curso en el servidor.
Atributo Tipo Descripción Ejemplos Presencia
network.transport cadena Capa de transporte OSI o método de comunicación entre procesos. tcp; unix Siempre
network.type cadena Capa de red OSI o equivalente que no es de OSI. ipv4; ipv6 Si el transporte es tcp o udp.
server.address cadena Nombre de dominio de dirección del servidor si está disponible sin búsqueda inversa de DNS; de lo contrario, dirección IP o nombre del socket de dominio de Unix. example.com Siempre
server.port int Número de puerto del servidor 80; 8080; 443 Si el transporte es tcp o udp.

Disponible a partir de: .NET 8.0.

Microsoft.AspNetCore.Http.Connections

Las métricas Microsoft.AspNetCore.Http.Connections notifican información de conexión de SignalR de ASP.NET Core:

Métrica: signalr.server.connection.duration
Nombre Tipo de instrumento Unidad (UCUM) Descripción
signalr.server.connection.duration Histograma s Duración de las conexiones en el servidor.
Atributo Tipo Descripción Ejemplos Presencia
signalr.connection.status cadena Estado de cierre de la conexión HTTP de SignalR. app_shutdown; timeout Siempre
signalr.transport cadena Tipo de transporte de SignalR web_sockets; long_polling Siempre

Disponible a partir de: .NET 8.0.

Value Descripción
normal_closure La conexión se cerró normalmente.
timeout La conexión se cerró debido a un tiempo de espera.
app_shutdown La conexión se cerró porque la aplicación se está apagando.

signalr.transport es uno de los siguientes valores:

Valor Protocolo
server_sent_events Eventos de server-sent
long_polling Sondeo largo
web_sockets WebSocket

Dado que esta métrica realiza un seguimiento de la duración de la conexión e, idealmente, las conexiones de SignalR son duraderas, los cubos deben ser más largos que los usados durante las solicitudes. Por ejemplo, el uso de [ 0, 0,01, 0,02, 0,05, 0,1, 0,2, 0,5, 1, 2, 5, 10, 30, 60, 120, 300 ] proporciona un cubo superior de 5 minutos.

Disponible a partir de: .NET 8.0.

Métrica: signalr.server.active_connections
Nombre Tipo de instrumento Unidad (UCUM) Descripción
signalr.server.active_connections UpDownCounter {connection} Número de conexiones actualmente activas en el servidor.
Atributo Tipo Descripción Ejemplos Presencia
signalr.connection.status cadena Estado de cierre de la conexión HTTP de SignalR. app_shutdown; timeout Siempre
signalr.transport cadena Tipo de transporte de SignalR web_sockets; long_polling Siempre

Disponible a partir de: .NET 8.0.