Compartilhar via


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 listagem de métricas com base na API eventCounters alternativa, consulte EventCounters conhecidos no .NET.

Ponta

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 de System.Net.NameResolution relatam a resolução de nomes DNS de Dns:

Métrica: dns.lookup.duration
Nome 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 corda O nome que está sendo consultado. www.example.com; dot.net Sempre
error.type corda Uma cadeia de caracteres de erro conhecida ou o nome de tipo completo 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 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 DNS lança um SocketException. Para desambiguar melhor 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

Exceções de soquete com qualquer outro valor SocketError são relatadas como System.Net.Sockets.SocketException.

Ao usar o 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 System.Net.Http relatam informações de solicitação HTTP e conexão de System.Net.Http:

Métrica: http.client.open_connections
Nome 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 ativas ou ociosas no cliente
Atributo Tipo Descrição Exemplos Presença
http.connection.state corda Estado da conexão HTTP no pool de conexões HTTP. active; idle Sempre
network.protocol.version corda Versão do protocolo HTTP usada. 1.1; 2 Sempre
server.address corda Identificador de host da "origem do URI" solicitação HTTP é enviada. example.com Sempre
server.port int Identificador de porta da "origem do URI" solicitação HTTP é enviada. 80; 8080; 443 Se não for padrão (80 para o esquema de http, 443 para https)
network.peer.address corda Endereço IP par da conexão de soquete. 10.5.3.2 Sempre
url.scheme corda 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 tratando solicitações ativas. Conexões ativas podem estar transmitindo dados ou aguardando o cliente ou o servidor. As conexões ociosas não estão tratando nenhuma solicitação, mas são deixadas abertas para que as solicitações futuras possam ser tratadas mais rapidamente.

Disponível a partir de: .NET 8

Métrica: http.client.connection.duration
Nome 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 corda Versão do protocolo HTTP usada. 1.1; 2 Sempre
server.address corda Identificador de host da "origem do URI" solicitação HTTP é enviada. example.com Sempre
server.port int Identificador de porta da "origem do URI" solicitação HTTP é enviada. 80; 8080; 443 Se não for padrão (80 para o esquema de http, 443 para https)
network.peer.address corda Endereço IP da conexão de soquete. 10.5.3.2 Sempre
url.scheme corda 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á acompanhando 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 os 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 bucket superior de 5 minutos.

Disponível a partir de: .NET 8

Métrica: http.client.request.duration
Nome 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 corda Motivo da falha da solicitação: um dos erros de solicitação HTTP em snake_case ou um tipo de exceção completo ou um código de status HTTP 4xx/5xx. System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error; 404 Se a solicitação tiver falhado.
http.request.method corda Método de solicitação HTTP. GET; POST; HEAD; _OTHER [2] Sempre
http.response.status_code int código de status de resposta HTTP. 200 Se a resposta foi recebida.
network.protocol.version corda Versão do protocolo HTTP usada. 1.1; 2 Se a resposta foi recebida.
server.address corda Identificador de host da "origem do URI" solicitação HTTP é enviada. example.com Sempre
server.port int Identificador de porta da "origem do URI" solicitação HTTP é enviada. 80; 8080; 443 Depende da versão do .NET. [3]
url.scheme corda 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 enumeração no caso de cobra, 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 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:

  • do .NET 8: Presente se não for padrão (80 para esquema de http, 443 para https)
  • .NET 9+: Sempre presente

A duração da solicitação de cliente HTTP mede o tempo que o manipulador de cliente subjacente leva para concluir a solicitação. Concluir a solicitação inclui o tempo de leitura dos cabeçalhos de resposta do fluxo de rede. Ele não inclui o tempo gasto lendo o corpo da resposta.

Ao usar o 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

Ponta

de Enriquecimento é possível para essa métrica.

Métrica: http.client.request.time_in_queue
Nome Tipo de instrumento Unidade (UCUM) Descrição
http.client.request.time_in_queue Histograma s A quantidade de tempo que as solicitações gastaram em uma fila aguardando uma conexão disponível.
Atributo Tipo Descrição Exemplos Presença
http.request.method corda Método de solicitação HTTP. GET; POST; HEAD Sempre
network.protocol.version corda Versão do protocolo HTTP usada. 1.1; 2 Sempre
server.address corda Identificador de host da "origem do URI" solicitação HTTP é enviada. example.com Sempre
server.port int Identificador de porta da "origem do URI" solicitação HTTP é enviada. 80; 8080; 443 Se não for padrão (80 para o esquema de http, 443 para https)
url.scheme corda 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 tratando 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. Esse instrumento mede o tempo que as solicitações HTTP passam aguardando nessa fila, antes de qualquer coisa ser enviada pela rede.

Disponível a partir de: .NET 8

Métrica: http.client.active_requests
Nome 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 corda Método de solicitação HTTP. GET; POST; HEAD Sempre
server.address corda Identificador de host da "origem do URI" solicitação HTTP é enviada. example.com Sempre
server.port int Identificador de porta da "origem do URI" solicitação HTTP é enviada. 80; 8080; 443 Se não for padrão (80 para o esquema de http, 443 para https)
url.scheme corda 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 estão ativas pelo mesmo período de tempo medido pelo instrumento http.client.request.duration.

Disponível a partir de: .NET 8