Compartir a través de


métricas de System.Net

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

Propina

Para obtener más información sobre cómo recopilar, notificar, enriquecer y probar métricas de System.Net, consulte Métricas de redes en .NET.

System.Net.NameResolution

Las métricas de System.Net.NameResolution notifican la resolución de nombres DNS de Dns:

Métrica: dns.lookup.duration
Nombre Tipo de instrumento Unidad Descripción
dns.lookup.duration Histograma s Mide el tiempo necesario para realizar una búsqueda dns.
Atributo Tipo Descripción Ejemplos Presencia
dns.question.name cuerda Nombre que se está consultando. www.example.com; dot.net Siempre
error.type cuerda Cadena de error conocida o nombre de tipo completo de una excepción que se produjo. host_not_found; System.Net.Sockets.SocketException Si se produjo un error

Esta métrica mide el tiempo necesario para realizar solicitudes DNS. Estas solicitudes pueden producirse llamando a métodos en Dns o indirectamente dentro de las API de nivel superior en tipos como HttpClient.

La mayoría de los errores al realizar una búsqueda DNS inician una SocketException. Para desambiguar mejor los casos de error comunes, las excepciones de socket con SocketErrorCode específicos reciben nombres de error explícitos en error.type:

SocketErrorCode error.type
HostNotFound host_not_found
TryAgain try_again
AddressFamilyNotSupported address_family_not_supported
NoRecovery no_recovery

Las excepciones de socket con cualquier otro valor de SocketError se notifican como System.Net.Sockets.SocketException.

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

System.Net.Http

Las métricas de System.Net.Http informan de la solicitud HTTP y la información de conexión de System.Net.Http:

Métrica: http.client.open_connections
Nombre Tipo de instrumento Unidad (UCUM) Descripción
http.client.open_connections UpDownCounter {connection} Número de conexiones HTTP salientes que están activas o inactivas actualmente en el cliente
Atributo Tipo Descripción Ejemplos Presencia
http.connection.state cuerda Estado de la conexión HTTP en el grupo de conexiones HTTP. active; idle Siempre
network.protocol.version cuerda Versión del protocolo HTTP usado. 1.1; 2 Siempre
server.address cuerda Identificador de host del "origen del URI" solicitud HTTP se envía a. example.com Siempre
server.port Int Identificador de puerto del "origen del URI" solicitud HTTP se envía a. 80; 8080; 443 Si no es predeterminado (80 para http esquema, 443 para https)
network.peer.address cuerda Dirección IP del mismo nivel de la conexión de socket. 10.5.3.2 Siempre
url.scheme cuerda El esquema de URI componente que identifica el protocolo usado. http; https; ftp Siempre

HttpClient, cuando está configurado para usar el SocketsHttpHandlerpredeterminado , mantiene un grupo almacenado en caché de conexiones de red para enviar mensajes HTTP. Esta métrica cuenta cuántas conexiones están actualmente en el grupo. Las conexiones activas controlan las solicitudes activas. Las conexiones activas podrían transmitir datos o esperar al cliente o servidor. Las conexiones inactivas no controlan ninguna solicitud, pero se dejan abiertas para que las solicitudes futuras se puedan controlar más rápidamente.

Disponible a partir de: .NET 8

Métrica: http.client.connection.duration
Nombre Tipo de instrumento Unidad (UCUM) Descripción
http.client.connection.duration Histograma s Duración de las conexiones HTTP salientes establecidas correctamente.
Atributo Tipo Descripción Ejemplos Presencia
network.protocol.version cuerda Versión del protocolo HTTP usado. 1.1; 2 Siempre
server.address cuerda Identificador de host del "origen del URI" solicitud HTTP se envía a. example.com Siempre
server.port Int Identificador de puerto del "origen del URI" solicitud HTTP se envía a. 80; 8080; 443 Si no es predeterminado (80 para http esquema, 443 para https)
network.peer.address cuerda Dirección IP de la conexión de socket. 10.5.3.2 Siempre
url.scheme cuerda El esquema de URI componente que identifica el protocolo usado. http; https; ftp Siempre

Esta métrica solo se captura cuando HttpClient está configurado para usar la SocketsHttpHandlerpredeterminada.

Dado que esta métrica realiza un seguimiento de la duración de la conexión y, 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

Métrica: http.client.request.duration
Nombre Tipo de instrumento Unidad (UCUM) Descripción
http.client.request.duration Histograma s Duración de las solicitudes HTTP salientes.
Atributo Tipo Descripción Ejemplos Presencia
error.type cuerda Motivo del error de solicitud: uno de los errores de solicitud HTTP en snake_case, o un tipo de excepción completo o un código de estado HTTP 4xx/5xx. System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error ; 404 Si se ha producido un error en la solicitud.
http.request.method cuerda Método de solicitud HTTP. GET; POST; HEAD; _OTHER [2] Siempre
http.response.status_code Int código de estado de respuesta HTTP. 200 Si se recibió la respuesta.
network.protocol.version cuerda Versión del protocolo HTTP usado. 1.1; 2 Si se recibió la respuesta.
server.address cuerda Identificador de host del "origen del URI" solicitud HTTP se envía a. example.com Siempre
server.port Int Identificador de puerto del "origen del URI" solicitud HTTP se envía a. 80; 8080; 443 Depende de la versión de .NET. [3]
url.scheme cuerda El esquema de URI componente que identifica el protocolo usado. http; https; ftp Siempre

[1] error.type: Si se ha producido un error en la solicitud, el valor se establece en uno de los siguientes:

  • Un nombre de excepción con tipo, por ejemplo, TaskCanceledException.
  • Código de estado que indica un error de cliente o servidor, por ejemplo, 500.
  • Si se produjo un HttpRequestException con un HttpRequestError distinto de Unknown, el valor de enumeración en el caso de serpiente, por ejemplo, name_resolution_error.

[2] http.request.method:http.request.method:** El valor contiene el nombre del método, si el método es uno de los métodos conocidos enumerados en RFC9110; de lo contrario, el valor es _OTHER. Los nombres de método proporcionados por el usuario se asignarán a nombres conocidos de manera que no distinguen mayúsculas de minúsculas. Por ejemplo, si el usuario proporciona el nombre GeT, se asignará a GET.

[3] server.port: La presencia del valor depende de la versión:

  • .NET 8: presente si no es el valor predeterminado (80 para el esquema de http, 443 para https)
  • de .NET 9+: Siempre presente

La duración de la solicitud del cliente HTTP mide el tiempo que tarda el controlador de cliente subyacente en completar la solicitud. Completar la solicitud incluye el tiempo de lectura de los encabezados de respuesta de la secuencia de red. No incluye el tiempo dedicado a leer el cuerpo de la respuesta.

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

Propina

de enriquecimiento es posible para esta métrica.

Métrica: http.client.request.time_in_queue
Nombre Tipo de instrumento Unidad (UCUM) Descripción
http.client.request.time_in_queue Histograma s Cantidad de tiempo empleado en una cola en espera de una conexión disponible.
Atributo Tipo Descripción Ejemplos Presencia
http.request.method cuerda Método de solicitud HTTP. GET; POST; HEAD Siempre
network.protocol.version cuerda Versión del protocolo HTTP usado. 1.1; 2 Siempre
server.address cuerda Identificador de host del "origen del URI" solicitud HTTP se envía a. example.com Siempre
server.port Int Identificador de puerto del "origen del URI" solicitud HTTP se envía a. 80; 8080; 443 Si no es predeterminado (80 para http esquema, 443 para https)
url.scheme cuerda El esquema de URI componente que identifica el protocolo usado. http; https; ftp Siempre

HttpClient, cuando se configura para usar el SocketsHttpHandlerpredeterminado , envía solicitudes HTTP mediante un grupo de conexiones de red. Si todas las conexiones están ocupadas controlando otras solicitudes, las nuevas solicitudes se colocan en una cola y esperan hasta que una conexión de red esté disponible para su uso. Este instrumento mide la cantidad de tiempo que las solicitudes HTTP pasan esperando en esa cola, antes de que se envíe algo a través de la red.

Disponible a partir de: .NET 8

Métrica: http.client.active_requests
Nombre Tipo de instrumento Unidad (UCUM) Descripción
http.client.active_requests UpDownCounter {request} Número de solicitudes HTTP activas.
Atributo Tipo Descripción Ejemplos Presencia
http.request.method cuerda Método de solicitud HTTP. GET; POST; HEAD Siempre
server.address cuerda Identificador de host del "origen del URI" solicitud HTTP se envía a. example.com Siempre
server.port Int Identificador de puerto del "origen del URI" solicitud HTTP se envía a. 80; 8080; 443 Si no es predeterminado (80 para http esquema, 443 para https)
url.scheme cuerda El esquema de URI componente que identifica el protocolo usado. http; https; ftp Siempre

Esta métrica cuenta cuántas solicitudes se consideran activas. Las solicitudes están activas durante el mismo período de tiempo medido por el instrumento http.client.request.duration.

Disponible a partir de: .NET 8