Métricas de System.Net
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 baseadas na API EventCounters consulte EventCounters Bem conhecidos no .NET.
Dica
Para obter mais informações sobre como coletar, relatar, enriquecer e testar as métricas do System.Net, confira Métricas do sistema 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
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 |
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 ocorrer um erro |
Essa métrica mede o tempo necessário para fazer solicitações de DNS. Essas solicitações podem ocorrer por meio da chamada de 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 desambiguar melhor os casos de erro comuns, as exceções de soquete com SocketErrorCode específico 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 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 e conexão HTTP 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
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 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 de camada de aplicativo usado. | 1.1 ; 2 |
Sempre |
server.address |
string | Identificador de host da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | example.com |
Sempre |
server.port |
INT | Identificador de porta da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | 80 ; 8080 ; 443 |
Se não for padrão (80 para esquema http , 443 para https ) |
network.peer.address |
string | Endereço IP par da conexão de soquete. | 10.5.3.2 |
Sempre |
url.scheme |
string | O componente de esquema de URI que identifica o protocolo usado. | http ; https ; ftp |
Sempre |
HttpClient, quando configurado para usar o SocketsHttpHandler padrão, mantém um pool armazenado 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 futuras solicitações possam ser processadas com mais rapidez.
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 sucesso. |
Atributo | Tipo | Descrição | Exemplos | Presença |
---|---|---|---|---|
network.protocol.version |
string | Versão do protocolo de camada de aplicativo usado. | 1.1 ; 2 |
Sempre |
server.address |
string | Identificador de host da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | example.com |
Sempre |
server.port |
INT | Identificador de porta da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | 80 ; 8080 ; 443 |
Se não for padrão (80 para esquema http , 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 de esquema de URI que identifica o protocolo usado. | http ; https ; ftp |
Sempre |
Essa métrica só é capturada quando HttpClient está configurado para usar o SocketsHttpHandler padrã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, o uso de [ 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 |
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 |
INT | Código de status de resposta HTTP. | 200 |
Se tiver sido recebido. |
network.protocol.version |
string | Versão do protocolo de camada de aplicativo usado. | 1.1 ; 2 |
Se a resposta foi recebida. |
server.address |
string | Identificador de host da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | example.com |
Sempre |
server.port |
INT | Identificador de porta da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | 80 ; 8080 ; 443 |
Se não for padrão (80 para esquema http , 443 para https ) |
url.scheme |
string | O componente de 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 de 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 da rede. Isso não inclui o tempo gasto para ler 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
Dica
O 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 passaram 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 de camada de aplicativo usado. | 1.1 ; 2 |
Sempre |
server.address |
string | Identificador de host da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | example.com |
Sempre |
server.port |
INT | Identificador de porta da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | 80 ; 8080 ; 443 |
Se não for padrão (80 para esquema http , 443 para https ) |
url.scheme |
string | O componente de esquema de URI que identifica o protocolo usado. | http ; https ; ftp |
Sempre |
HttpClient, quando configurado para usar o SocketsHttpHandler padrão, envia solicitações HTTP usando um pool de conexões de rede. Se todas as conexões estiverem ocupadas com o tratamento de outras solicitações, as novas solicitações serão posicionadas em uma fila e aguardarão até que uma conexão de rede esteja disponível para uso. Esse instrumento mede a quantidade de 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 |
string | Método de solicitação HTTP. | GET ; POST ; HEAD |
Sempre |
server.address |
string | Identificador de host da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | example.com |
Sempre |
server.port |
INT | Identificador de porta da solicitação HTTP de "origem do URI" para a qual a solicitação é enviada. | 80 ; 8080 ; 443 |
Se não for padrão (80 para esquema http , 443 para https ) |
url.scheme |
string | O componente de 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de