Netwerk gebeurtenistellers in .NET
EventCounters zijn .NET-API's die worden gebruikt voor lichtgewicht, platformoverschrijdende en bijna realtime prestatiegegevensverzameling.
Netwerkonderdelen zijn geïnstrueerd voor het publiceren van basisdiagnosegegevens met behulp van EventCounters. Ze bevatten informatie zoals de volgende:
System.Net.Http
>requests-started
System.Net.Http
>requests-failed
System.Net.Http
>http11-connections-current-total
System.Net.Security
>all-tls-sessions-open
System.Net.Sockets
>outgoing-connections-established
System.Net.NameResolution
>dns-lookups-duration
Tip
Zie bekende tellers voor de volledige lijst.
Tip
Voor projecten die gericht zijn op .NET 8+, kunt u overwegen om de nieuwere en meer metrische netwerkgegevens te gebruiken in plaats van EventCounters.
Providers
Netwerkgegevens worden verdeeld over de volgende providers:
System.Net.Http
(HttpClient
enSocketsHttpHandler
)System.Net.NameResolution
(Dns
)System.Net.Security
(SslStream
)System.Net.Sockets
Microsoft.AspNetCore.Hosting
Microsoft-AspNetCore-Server-Kestrel
De telemetrie heeft enige prestatieoverhead wanneer deze is ingeschakeld, dus zorg ervoor dat u zich alleen abonneert op providers waarin u daadwerkelijk geïnteresseerd bent.
Gebeurtenistellers van buiten het proces bewaken
dotnet-counters
dotnet-counters
is een platformoverschrijdend hulpprogramma voor prestatiebewaking voor ad-hocstatusbewaking en prestatieonderzoek op het eerste niveau.
dotnet tool install --global dotnet-counters
dotnet-counters monitor --counters System.Net.Http,System.Net.Security --process-id 1234
Met de opdracht wordt de console voortdurend vernieuwd met de nieuwste nummers.
[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
Zie de dotnet-counter docs voor alle beschikbare opdrachten en parameters.
Analyses van toepassingen
Application Insights verzamelt standaard geen gebeurtenistellers. Zie de documentatie van AppInsights EventCounters voor informatie over het aanpassen van de set tellers waarin u geïnteresseerd bent.
Voorbeeld:
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"));
});
Zie het voorbeeld RuntimeEventCounters voor een voorbeeld van hoe u zich abonneert op veel runtime- en ASP.NET-gebeurtenistellers. Voeg gewoon een EventCounterCollectionRequest
voor elk item toe.
foreach (var (eventSource, counters) in RuntimeEventCounters.EventCounters)
{
foreach (string counter in counters)
{
module.Counters.Add(new EventCounterCollectionRequest(eventSource, counter));
}
}
Gebeurtenistellers in proces gebruiken
Met de Yarp.Telemetry.Consumption
bibliotheek kunt u eenvoudig gebeurtenistellers gebruiken vanuit het proces.
Hoewel het pakket momenteel wordt onderhouden als onderdeel van het YARP-project , kan het worden gebruikt in elke .NET-toepassing.
Als u deze wilt gebruiken, implementeert u de 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");
}
}
Registreer vervolgens de implementaties bij uw DI-container:
services.AddSingleton<IMetricsConsumer<SocketsMetrics>, MyMetricsConsumer>();
services.AddTelemetryListeners();
De bibliotheek biedt de volgende sterk getypte metrische gegevenstypen:
Meer telemetrie nodig?
Als u suggesties hebt voor andere nuttige informatie die kan worden weergegeven via gebeurtenissen of metrische gegevens, maakt u een probleem met dotnet/runtime.
Als u de Yarp.Telemetry.Consumption
bibliotheek gebruikt en suggesties hebt, maakt u een probleem met microsoft/reverse proxy.