Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
EventCounters são APIs .NET usadas para coleta de métricas de desempenho leve, entre plataformas e quase em tempo real.
Os componentes de rede são instrumentados para publicar informações básicas de diagnóstico usando EventCounters. Eles incluem informações como as seguintes:
System.Net.Http>requests-startedSystem.Net.Http>requests-failedSystem.Net.Http>http11-connections-current-totalSystem.Net.Security>all-tls-sessions-openSystem.Net.Sockets>outgoing-connections-establishedSystem.Net.NameResolution>dns-lookups-duration
Sugestão
Para obter a lista completa, consulte contadores reconhecidos.
Sugestão
Em projetos destinados ao .NET 8+, considere usar as métricas de rede mais recentes e ricas em recursos em vez de EventCounters.
Fornecedores
As informações de rede são divididas entre os seguintes provedores:
-
System.Net.Http(HttpClienteSocketsHttpHandler) -
System.Net.NameResolution(Dns) -
System.Net.Security(SslStream) System.Net.SocketsMicrosoft.AspNetCore.HostingMicrosoft-AspNetCore-Server-Kestrel
A telemetria tem alguma sobrecarga de desempenho quando ativada, por isso certifique-se de que subscreve apenas os fornecedores em que está realmente interessado.
Monitore contadores de eventos externamente ao processo
contadores de pontos
dotnet-counters é uma ferramenta de monitorização de desempenho multiplataforma para monitorização ad-hoc de saúde e investigação de desempenho de primeiro nível.
dotnet tool install --global dotnet-counters
dotnet-counters monitor --counters System.Net.Http,System.Net.Security --process-id 1234
O comando atualiza continuamente o console com os números mais recentes.
[System.Net.Http]
Current Http 1.1 Connections 3
Current Http 2.0 Connections 1
Current Http 3.0 Connections 0
Current Requests 4
HTTP 1.1 Requests Queue Duration (ms) 0
HTTP 2.0 Requests Queue Duration (ms) 0
HTTP 3.0 Requests Queue Duration (ms) 0
Requests Failed 0
Requests Failed Rate (Count / 1 sec) 0
Requests Started 470
Requests Started Rate (Count / 1 sec) 18
Para todos os comandos e parâmetros disponíveis, consulte a documentação do dotnet-counter.
Informações sobre aplicativos
O Application Insights não coleta contadores de eventos por padrão. Para obter informações sobre como personalizar o conjunto de contadores em que você está interessado, consulte os documentos do AppInsights EventCounters.
Por exemplo:
services.ConfigureTelemetryModule<EventCounterCollectionModule>((module, options) =>
{
module.Counters.Add(new EventCounterCollectionRequest("System.Net.Http", "current-requests"));
module.Counters.Add(new EventCounterCollectionRequest("System.Net.Http", "requests-failed"));
module.Counters.Add(new EventCounterCollectionRequest("System.Net.Http", "http11-connections-current-total"));
module.Counters.Add(new EventCounterCollectionRequest("System.Net.Security", "all-tls-sessions-open"));
});
Para obter um exemplo de como se inscrever em muitos contadores de eventos de tempo de execução e ASP.NET, consulte o exemplo RuntimeEventCounters. Basta adicionar um EventCounterCollectionRequest para cada entrada.
foreach (var (eventSource, counters) in RuntimeEventCounters.EventCounters)
{
foreach (string counter in counters)
{
module.Counters.Add(new EventCounterCollectionRequest(eventSource, counter));
}
}
Consumir contadores de eventos no mesmo processo
A Yarp.Telemetry.Consumption biblioteca facilita o consumo de contadores de eventos de dentro do processo.
Embora o pacote seja atualmente mantido como parte do projeto YARP , ele pode ser usado em qualquer aplicativo .NET.
Para usá-lo, implemente a IMetricsConsumer<TMetrics> interface:
public sealed class MyMetricsConsumer : IMetricsConsumer<SocketsMetrics>
{
public void OnMetrics(SocketsMetrics previous, SocketsMetrics current)
{
var elapsedTime = (current.Timestamp - previous.Timestamp).TotalMilliseconds;
Console.WriteLine($"Received {current.BytesReceived - previous.BytesReceived} bytes in the last {elapsedTime:N2} ms");
}
}
Em seguida, registre as implementações com seu contêiner DI:
services.AddSingleton<IMetricsConsumer<SocketsMetrics>, MyMetricsConsumer>();
services.AddTelemetryListeners();
A biblioteca fornece os seguintes tipos de métricas fortemente tipificados:
Precisa de mais telemetria?
Se você tiver sugestões para outras informações úteis que possam ser expostas por meio de eventos ou métricas, crie um problema dotnet/runtime.
Se você estiver usando a Yarp.Telemetry.Consumption biblioteca e tiver sugestões, crie um problema de microsoft/proxy reverso.