System.Net métricas
Este artigo descreve as métricas de rede internas para System.Net produzidas usando a API System.Diagnostics.Metrics. Para obter uma lista de métricas com base no alternativo EventCounters API, consulte EventCounters bem conhecidos no .NET.
Dica
Para obter mais informações sobre como coletar, relatar, enriquecer e testar métricas de System.Net, consulte Métricas de rede no .NET.
System.Net.NameResolution
As métricas System.Net.NameResolution
relatam a resolução de nomes DNS de Dns:
Métrica: dns.lookup.duration
Designação | Tipo de Instrumento | Unidade | Descrição |
---|---|---|---|
dns.lookup.duration |
Histograma | s |
Mede o tempo necessário para executar uma pesquisa de DNS. |
Atributo | Tipo | Descrição | Exemplos | Presença |
---|---|---|---|---|
dns.question.name |
string | O nome que está sendo consultado. |
www.example.com ; dot.net |
Sempre |
error.type |
string | Uma cadeia de caracteres de erro bem conhecida ou o nome completo do tipo de uma exceção que ocorreu. |
host_not_found ; System.Net.Sockets.SocketException |
Se ocorreu um erro |
Essa métrica mede o tempo necessário para fazer solicitações de DNS. Essas solicitações podem ocorrer chamando métodos em Dns ou indiretamente em APIs de nível superior em tipos como HttpClient.
A maioria dos erros ao fazer uma pesquisa de DNS lança um SocketException. Para melhor desambiguar os casos de erro comuns, exceções de soquete com SocketErrorCode específicas recebem nomes de erro explícitos em error.type
:
SocketErrorCode | error.type |
---|---|
HostNotFound | host_not_found |
TryAgain | try_again |
AddressFamilyNotSupported | address_family_not_supported |
NoRecovery | no_recovery |
As exceções de soquete com qualquer outro valor de SocketError
são relatadas como System.Net.Sockets.SocketException
.
Ao usar OpenTelemetry, os buckets padrão para essa métrica são definidos como [ 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 ].
Disponível a partir de: .NET 8
System.Net.Http
As métricas de System.Net.Http
relatam informações de solicitação HTTP e conexão 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
Designação | Tipo de Instrumento | Unidade (UCUM) | Descrição |
---|---|---|---|
http.client.open_connections |
UpDownCounter | {connection} |
Número de conexões HTTP de saída que estão atualmente ativas ou ociosas no cliente |
Atributo | Tipo | Descrição | Exemplos | Presença |
---|---|---|---|---|
http.connection.state |
string | Estado da conexão HTTP no pool de conexões HTTP. |
active ; idle |
Sempre |
network.protocol.version |
string | Versão do protocolo HTTP utilizado. |
1.1 ; 2 |
Sempre |
server.address |
string | O identificador de host da "origem do URI" solicitação HTTP é enviada. | example.com |
Sempre |
server.port |
Int | Identificador de porta do "origem do URI" solicitação HTTP é enviada. |
80 ; 8080 ; 443 |
Se não for padrão (80 para http esquema, 443 para https ) |
network.peer.address |
string | Endereço IP de mesmo nível da conexão de soquete. | 10.5.3.2 |
Sempre |
url.scheme |
string | O esquema de URI componente que identifica o protocolo usado. |
http ; https ; ftp |
Sempre |
HttpClient, quando configurado para usar o SocketsHttpHandlerpadrão, mantém um pool em cache de conexões de rede para enviar mensagens HTTP. Essa métrica conta quantas conexões estão atualmente no pool. As conexões ativas estão lidando com solicitações ativas. As conexões ativas podem estar transmitindo dados ou aguardando o cliente ou servidor. As conexões ociosas não estão lidando com nenhuma solicitação, mas são deixadas abertas para que solicitações futuras possam ser tratadas mais rapidamente.
Disponível a partir de: .NET 8
Métrica: http.client.connection.duration
Designação | Tipo de Instrumento | Unidade (UCUM) | Descrição |
---|---|---|---|
http.client.connection.duration |
Histograma | s |
A duração das conexões HTTP de saída estabelecidas com êxito. |
Atributo | Tipo | Descrição | Exemplos | Presença |
---|---|---|---|---|
network.protocol.version |
string | Versão do protocolo HTTP utilizado. |
1.1 ; 2 |
Sempre |
server.address |
string | O identificador de host da "origem do URI" solicitação HTTP é enviada. | example.com |
Sempre |
server.port |
Int | Identificador de porta do "origem do URI" solicitação HTTP é enviada. |
80 ; 8080 ; 443 |
Se não for padrão (80 para http esquema, 443 para https ) |
network.peer.address |
string | Endereço IP da conexão de soquete. | 10.5.3.2 |
Sempre |
url.scheme |
string | O esquema de URI componente que identifica o protocolo usado. |
http ; https ; ftp |
Sempre |
Essa métrica só é capturada quando HttpClient está configurado para usar o SocketsHttpHandlerpadrão .
Como essa métrica está rastreando a duração da conexão e, idealmente, as conexões http são usadas para várias solicitações, os buckets devem ser mais longos do que aqueles usados para durações de solicitação. Por exemplo, usar [ 0,01, 0,02, 0,05, 0,1, 0,2, 0,5, 1, 2, 5, 10, 30, 60, 120, 300 ] fornece um balde superior de 5 minutos.
Disponível a partir de: .NET 8
Métrica: http.client.request.duration
Designação | Tipo de Instrumento | Unidade (UCUM) | Descrição |
---|---|---|---|
http.client.request.duration |
Histograma | s |
A duração das solicitações HTTP de saída. |
Atributo | Tipo | Descrição | Exemplos | Presença |
---|---|---|---|---|
error.type |
string | Motivo da falha da solicitação: um dos erros de solicitação HTTP no snake_case, ou um tipo de exceção completa, ou um código de status HTTP 4xx/5xx. |
System.Threading.Tasks.TaskCanceledException ; name_resolution_error ; secure_connection_error ; 404 |
Se a solicitação falhou. |
http.request.method |
string | Método de solicitação HTTP. |
GET ; POST ; HEAD ; _OTHER [2] |
Sempre |
http.response.status_code |
Int | código de status da resposta HTTP. | 200 |
Se a resposta foi recebida. |
network.protocol.version |
string | Versão do protocolo HTTP utilizado. |
1.1 ; 2 |
Se a resposta foi recebida. |
server.address |
string | O identificador de host da "origem do URI" solicitação HTTP é enviada. | example.com |
Sempre |
server.port |
Int | Identificador de porta do "origem do URI" solicitação HTTP é enviada. |
80 ; 8080 ; 443 |
Depende da versão .NET. [3] |
url.scheme |
string | O esquema de URI componente que identifica o protocolo usado. |
http ; https ; ftp |
Sempre |
[1] error.type
: Se a solicitação tiver falhado, o valor será definido como um dos seguintes:
- Um nome de exceção com tipo, por exemplo, TaskCanceledException.
- Um código de status que indica um erro de cliente ou servidor, por exemplo,
500
. - Se um HttpRequestException ocorreu com um HttpRequestError diferente de
Unknown
, o valor de enum no caso da serpente, por exemplo,name_resolution_error
.
[2] http.request.method
:http.request.method
:** O valor contém o nome do método, se o método for um dos métodos bem conhecidos listados em RFC9110; caso contrário, o valor é _OTHER
. Os nomes de método fornecidos pelo usuário serão mapeados para nomes conhecidos de maneira que não diferencia maiúsculas de minúsculas. Por exemplo, se o usuário fornecer o nome GeT
, ele será mapeado para GET
.
[3] server.port
: A presença do valor depende da versão:
-
.NET 8: Presente se não padrão (
80
parahttp
esquema,443
parahttps
) - .NET 9+: Sempre presente
A duração da solicitação do cliente HTTP mede o tempo que o manipulador do cliente subjacente leva para concluir a solicitação. A conclusão da solicitação inclui o tempo até a leitura dos cabeçalhos de resposta do fluxo de rede. Não inclui o tempo gasto lendo o corpo da resposta.
Ao usar OpenTelemetry, os buckets padrão para essa métrica são definidos como [ 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 ].
Disponível a partir de: .NET 8
Dica
Enriquecimento é possível para esta métrica.
Métrica: http.client.request.time_in_queue
Designação | Tipo de Instrumento | Unidade (UCUM) | Descrição |
---|---|---|---|
http.client.request.time_in_queue |
Histograma | s |
A quantidade de solicitações de tempo gastas em uma fila aguardando uma conexão disponível. |
Atributo | Tipo | Descrição | Exemplos | Presença |
---|---|---|---|---|
http.request.method |
string | Método de solicitação HTTP. |
GET ; POST ; HEAD |
Sempre |
network.protocol.version |
string | Versão do protocolo HTTP utilizado. |
1.1 ; 2 |
Sempre |
server.address |
string | O identificador de host da "origem do URI" solicitação HTTP é enviada. | example.com |
Sempre |
server.port |
Int | Identificador de porta do "origem do URI" solicitação HTTP é enviada. |
80 ; 8080 ; 443 |
Se não for padrão (80 para http esquema, 443 para https ) |
url.scheme |
string | O esquema de URI componente que identifica o protocolo usado. |
http ; https ; ftp |
Sempre |
HttpClient, quando configurado para usar o SocketsHttpHandlerpadrão, envia solicitações HTTP usando um pool de conexões de rede. Se todas as conexões estiverem ocupadas lidando com outras solicitações, novas solicitações serão colocadas em uma fila e aguardarão até que uma conexão de rede esteja disponível para uso. Este instrumento mede a quantidade de tempo que as solicitações HTTP passam esperando nessa fila, antes de qualquer coisa ser enviada pela rede.
Disponível a partir de: .NET 8
Métrica: http.client.active_requests
Designação | Tipo de Instrumento | Unidade (UCUM) | Descrição |
---|---|---|---|
http.client.active_requests |
UpDownCounter | {request} |
Número de solicitações HTTP ativas. |
Atributo | Tipo | Descrição | Exemplos | Presença |
---|---|---|---|---|
http.request.method |
string | Método de solicitação HTTP. |
GET ; POST ; HEAD |
Sempre |
server.address |
string | O identificador de host da "origem do URI" solicitação HTTP é enviada. | example.com |
Sempre |
server.port |
Int | Identificador de porta do "origem do URI" solicitação HTTP é enviada. |
80 ; 8080 ; 443 |
Se não for padrão (80 para http esquema, 443 para https ) |
url.scheme |
string | O esquema de URI componente que identifica o protocolo usado. |
http ; https ; ftp |
Sempre |
Essa métrica conta quantas solicitações são consideradas ativas. As solicitações ficam ativas pelo mesmo período de tempo medido pelo http.client.request.duration instrumento.
Disponível a partir de: .NET 8