Partilhar via


System.Net métricas

Este artigo descreve as métricas de rede internas para System.Net produzir usando a System.Diagnostics.Metrics API. Para obter uma lista de métricas com base na API alternativa EventCounters , consulte EventCounters conhecidos no .NET.

Gorjeta

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

Métrica: dns.lookup.duration
Nome Tipo de Instrumento Unidade Description
dns.lookup.duration Histograma s Mede o tempo necessário para executar uma pesquisa de DNS.
Atributo Tipo Description 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 SocketExceptionarquivo . Para melhor desambiguar os casos de erro comuns, as exceções de soquete com nomes de erro específicos SocketErrorCode 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 SocketError valor 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 System.Net.Http métricas 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) Description
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 Description 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 da camada de aplicação usada. 1.1; 2 Sempre
server.address string O identificador de host da solicitação HTTP "origem do URI" é enviado para. example.com Sempre
server.port número inteiro O identificador de porta da solicitação HTTP "origem do URI" é enviado para. 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 componente do esquema de URI que identifica o protocolo usado. http; https; ftp Sempre

HttpClient, quando configurado para usar o padrão SocketsHttpHandler, 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
Nome Tipo de Instrumento Unidade (UCUM) Description
http.client.connection.duration Histograma s A duração das conexões HTTP de saída estabelecidas com êxito.
Atributo Tipo Description Exemplos Presença
network.protocol.version string Versão do protocolo da camada de aplicação usada. 1.1; 2 Sempre
server.address string O identificador de host da solicitação HTTP "origem do URI" é enviado para. example.com Sempre
server.port número inteiro O identificador de porta da solicitação HTTP "origem do URI" é enviado para. 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 componente do esquema de URI que identifica o protocolo usado. http; https; ftp Sempre

Essa métrica só é capturada quando HttpClient configurada para usar o padrão SocketsHttpHandler.

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
Nome Tipo de Instrumento Unidade (UCUM) Description
http.client.request.duration Histograma s A duração das solicitações HTTP de saída.
Atributo Tipo Description Exemplos Presença
error.type string Motivo da falha da solicitação: um dos erros de solicitação HTTP, 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 Sempre
http.response.status_code número inteiro Código de status da resposta HTTP. 200 Se um foi recebido.
network.protocol.version string Versão do protocolo da camada de aplicação usada. 1.1; 2 Se a resposta foi recebida.
server.address string O identificador de host da solicitação HTTP "origem do URI" é enviado para. example.com Sempre
server.port número inteiro O identificador de porta da solicitação HTTP "origem do URI" é enviado para. 80; 8080; 443 Se não for padrão (80 para http esquema, 443 para https)
url.scheme string O componente do esquema de URI que identifica o protocolo usado. http; https; ftp Sempre

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

Gorjeta

O enriquecimento é possível para esta métrica.

Métrica: http.client.request.time_in_queue
Nome Tipo de Instrumento Unidade (UCUM) Description
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 Description 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 da camada de aplicação usada. 1.1; 2 Sempre
server.address string O identificador de host da solicitação HTTP "origem do URI" é enviado para. example.com Sempre
server.port número inteiro O identificador de porta da solicitação HTTP "origem do URI" é enviado para. 80; 8080; 443 Se não for padrão (80 para http esquema, 443 para https)
url.scheme string O componente do esquema de URI que identifica o protocolo usado. http; https; ftp Sempre

HttpClient, quando configurado para usar o padrão SocketsHttpHandler, 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
Nome Tipo de Instrumento Unidade (UCUM) Description
http.client.active_requests UpDownCounter {request} Número de solicitações HTTP ativas.
Atributo Tipo Description 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 solicitação HTTP "origem do URI" é enviado para. example.com Sempre
server.port número inteiro O identificador de porta da solicitação HTTP "origem do URI" é enviado para. 80; 8080; 443 Se não for padrão (80 para http esquema, 443 para https)
url.scheme string O componente do esquema de URI 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 instrumento http.client.request.duration .

Disponível a partir de: .NET 8