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
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:
http.client.open_connections
http.client.connection.duration
http.client.request.duration
http.client.request.time_in_queue
http.client.active_requests
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 dehttp
,443
parahttps
) - 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
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