Freigeben über


ASP.NET Core-Metriken

Dieser Artikel beschreibt die in ASP.NET Core integrierten Metriken, die mit der System.Diagnostics.Metrics-API erstellt wurden. Eine Liste der Metriken, die auf der älteren EventCounters-API basieren, finden Sie hier.

Tipp

Weitere Informationen zum Sammeln, Melden, Anreichern und Testen ASP.NET Core-Metriken finden Sie unter Verwenden ASP.NET Core-Metriken.

Microsoft.AspNetCore.Hosting

Die Microsoft.AspNetCore.Hosting-Metriken melden allgemeine Informationen zu von ASP.NET Core empfangenen HTTP-Anforderungen:

Metrik: http.server.request.duration
Name Instrument Typ Einheit (UCUM) Beschreibung
http.server.request.duration Histogramm s Misst die Dauer eingehender HTTP-Anforderungen.
attribute type Beschreibung Beispiele Anwesenheit
http.route Zeichenfolge Die übereinstimmende Route. {controller}/{action}/{id?} Wenn sie verfügbar ist.
error.type Zeichenfolge Beschreibt eine Fehlerklasse, mit der der Vorgang beendet wurde. timeout; name_resolution_error; 500 Wenn die Anforderung mit einem Fehler beendet wurde.
http.request.method Zeichenfolge HTTP-Anforderungsmethode. GET; POST; HEAD Always
http.response.status_code INT HTTP-Antwortstatuscode. 200 Wenn eine gesendet wurde.
network.protocol.version Zeichenfolge Version des in network.protocol.name angegebenen Protokolls. 3.1.1 Always
url.scheme Zeichenfolge Die URI-Schema-Komponente, die das verwendete Protokoll identifiziert. http; https Always
aspnetcore.request.is_unhandled Boolean True, wenn die Anforderung nicht von der Anwendungspipeline verarbeitet wurde. true Wenn die Anforderung nicht verarbeitet wurde.

Die Zeit, die für die Bearbeitung einer eingehenden HTTP-Anforderung auf der Hosting-Ebene von ASP.NET Core gemessen wird. Die Zeitmessung beginnt, sobald der zugrundeliegende Webhost folgendes getan hat:

  • Die HTTP-Anforderungsheader des eingehenden Netzwerkstroms wurden hinreichend geparst, um die neue Anforderung zu identifizieren.
  • Initialisiert die Kontextdatenstrukturen wie z. B. die HttpContext.

Die Zeit endet, wenn:

  • Die ASP.NET Core-Handlerpipeline die Ausführung beendet hat.
  • Alle Antwortdaten gesendet wurden.
  • Die Kontextdatenstrukturen für die Anforderung verworfen werden.

Bei Verwendung von OpenTelemetry werden die Standardbuckets für diese Metrik auf „[ 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 ]“ festgelegt.

Ab .NET 8.0 verfügbar

Metrik: http.server.active_requests
Name Instrument Typ Einheit (UCUM) Beschreibung
http.server.active_requests UpDownCounter {request} Misst die Anzahl der gleichzeitigen HTTP-Anforderungen, die gerade in Bearbeitung sind.
attribute type Beschreibung Beispiele Anwesenheit
http.request.method Zeichenfolge HTTP-Anforderungsmethode. [1] GET; POST; HEAD Always
url.scheme Zeichenfolge Die URI-Schema-Komponente, die das verwendete Protokoll identifiziert. http; https Always

Ab .NET 8.0 verfügbar

Microsoft.AspNetCore.Routing

Die Microsoft.AspNetCore.Routing-Metriken melden Informationen zum Routing von HTTP-Anforderungen an ASP.NET Core-Endpunkte:

Metrik: aspnetcore.routing.match_attempts
Name Instrument Typ Einheit (UCUM) Beschreibung
aspnetcore.routing.match_attempts Leistungsindikator {match_attempt} Anzahl der Anforderungen, für die eine Zuordnung zu einem Endpunkt versucht wurde.
attribute type Beschreibung Beispiele Anwesenheit
aspnetcore.routing.match_status Zeichenfolge Übereinstimmungsergebnis success; failure Always
aspnetcore.routing.is_fallback_route boolean Ein Wert, der angibt, ob die übereinstimmende Route eine Fallbackroute ist. True Wenn eine Route erfolgreich abgeglichen wurde.
http.route Zeichenfolge Die übereinstimmende Route {controller}/{action}/{id?} Wenn eine Route erfolgreich abgeglichen wurde.

Ab .NET 8.0 verfügbar

Microsoft.AspNetCore.Diagnostics

Die Microsoft.AspNetCore.Diagnostics-Metriken melden Diagnoseinformationen aus ASP.NET Core-Middleware für die Fehlerbehandlung:

Metrik: aspnetcore.diagnostics.exceptions
Name Instrument Typ Einheit (UCUM) Beschreibung
aspnetcore.diagnostics.exceptions Leistungsindikator {exception} Anzahl der Ausnahmen, die von der Middleware für die Ausnahmebehandlung erfasst wurden.
attribute type Beschreibung Beispiele Anwesenheit
aspnetcore.diagnostics.exception.result Zeichenfolge Ergebnis der ASP.NET Core Middleware-Ausnahmebehandlung handled; unhandled Always
aspnetcore.diagnostics.handler.type Zeichenfolge Vollständiger Typname der IExceptionHandler-Implementierung, die die Ausnahme verarbeitet hat. Contoso.MyHandler Wenn die Ausnahme von diesem Handler verarbeitet wurde.
exception.type Zeichenfolge Vollständiger Name des Ausnahmetyps. System.OperationCanceledException; Contoso.MyException Always

Ab .NET 8.0 verfügbar

Microsoft.AspNetCore.RateLimiting

Die Microsoft.AspNetCore.RateLimiting-Metriken melden Information zur Ratenbegrenzung aus der ASP.NET Core-Middleware zur Ratenbegrenzung:

Metrik: aspnetcore.rate_limiting.active_request_leases
Name Instrument Typ Einheit (UCUM) Beschreibung
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} Anzahl der Anforderungen, die derzeit auf dem Server aktiv sind und für die eine Ratenbegrenzungs-Lease festgelegt wurde.
attribute type Beschreibung Beispiele Anwesenheit
aspnetcore.rate_limiting.policy Zeichenfolge Name der Richtlinie zur Ratenbegrenzung. fixed; sliding; token Wenn der übereinstimmende Endpunkt für die Anforderung eine Richtlinie zur Ratenbegrenzung hatte.

Ab .NET 8.0 verfügbar

Metrik: aspnetcore.rate_limiting.request_lease.duration
Name Instrument Typ Einheit (UCUM) Beschreibung
aspnetcore.rate_limiting.request_lease.duration Histogramm s Die Dauer der Ratenbegrenzungs-Lease, die für die Anforderungen auf dem Server gilt.
attribute type Beschreibung Beispiele Anwesenheit
aspnetcore.rate_limiting.policy Zeichenfolge Name der Richtlinie zur Ratenbegrenzung. fixed; sliding; token Wenn der übereinstimmende Endpunkt für die Anforderung eine Richtlinie zur Ratenbegrenzung hatte.

Ab .NET 8.0 verfügbar

Metrik: aspnetcore.rate_limiting.queued_requests
Name Instrument Typ Einheit (UCUM) Beschreibung
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} Die Anzahl der Anforderungen, die derzeit in die Warteschlange gestellt wurden, um eine Ratenbegrenzungs-Lease zu erhalten.
attribute type Beschreibung Beispiele Anwesenheit
aspnetcore.rate_limiting.policy Zeichenfolge Name der Richtlinie zur Ratenbegrenzung. fixed; sliding; token Wenn der übereinstimmende Endpunkt für die Anforderung eine Richtlinie zur Ratenbegrenzung hatte.

Ab .NET 8.0 verfügbar

Metrik: aspnetcore.rate_limiting.request.time_in_queue
Name Instrument Typ Einheit (UCUM) Beschreibung
aspnetcore.rate_limiting.request.time_in_queue Histogramm s Die Zeitdauer, die eine Anforderung in einer Warteschlange verbracht hat, um eine Ratenbegrenzungs-Lease zu erhalten.
attribute type Beschreibung Beispiele Anwesenheit
aspnetcore.rate_limiting.policy Zeichenfolge Name der Richtlinie zur Ratenbegrenzung. fixed; sliding; token Wenn der übereinstimmende Endpunkt für die Anforderung eine Richtlinie zur Ratenbegrenzung hatte.
aspnetcore.rate_limiting.result Zeichenfolge Das Ergebnis der Ratenbegrenzung zeigt an, ob die Lease erhalten wurde oder nicht. In diesem Fall enthält es einen Ablehnungsgrund. acquired; request_canceled Always

Ab .NET 8.0 verfügbar

Metrik: aspnetcore.rate_limiting.requests
Name Instrument Typ Einheit (UCUM) Beschreibung
aspnetcore.rate_limiting.requests Leistungsindikator {request} Die Anzahl der Anforderungen, die versucht haben, eine Ratenbegrenzungs-Lease zu erhalten.
attribute type Beschreibung Beispiele Anwesenheit
aspnetcore.rate_limiting.policy Zeichenfolge Name der Richtlinie zur Ratenbegrenzung. fixed; sliding; token Wenn der übereinstimmende Endpunkt für die Anforderung eine Richtlinie zur Ratenbegrenzung hatte.
aspnetcore.rate_limiting.result Zeichenfolge Das Ergebnis der Ratenbegrenzung zeigt an, ob die Lease erhalten wurde oder nicht. In diesem Fall enthält es einen Ablehnungsgrund. acquired; request_canceled Always

Ab .NET 8.0 verfügbar

Microsoft.AspNetCore.HeaderParsing

Die Microsoft.AspNetCore.HeaderParsing-Metriken melden Informationen zur ASP.NET Core-Headeranalyse:

Metrik: aspnetcore.header_parsing.parse_errors
Name Instrument Typ Einheit (UCUM) Beschreibung
aspnetcore.header_parsing.parse_errors Leistungsindikator {parse_error} Anzahl der Fehler, die beim Parsen von HTTP-Anforderungsheadern aufgetreten sind.
attribute type Beschreibung Beispiele Anwesenheit
aspnetcore.header_parsing.header.name Zeichenfolge Der Headername. Content-Type Always
error.type Zeichenfolge Die Fehlermeldung. Unable to parse media type value. Always

Ab .NET 8.0 verfügbar

Metrik: aspnetcore.header_parsing.cache_accesses

Die Metrik wird nur für HTTP-Anforderungsheader-Parser ausgegeben, die das Zwischenspeichern unterstützen.

Name Instrument Typ Einheit (UCUM) Beschreibung
aspnetcore.header_parsing.cache_accesses Leistungsindikator {cache_access} Anzahl der Zugriffe auf einen Cache für geparste Header-Werte.
attribute type Beschreibung Beispiele Anwesenheit
aspnetcore.header_parsing.header.name Zeichenfolge Der Headername. Content-Type Always
aspnetcore.header_parsing.cache_access.type Zeichenfolge Ein Wert, der angibt, ob der Wert des Headers im Cache gefunden wurde oder nicht. Hit; Miss Always

Ab .NET 8.0 verfügbar

Microsoft.AspNetCore.Server.Kestrel

Die Microsoft.AspNetCore.Server.Kestrel-Metriken melden HTTP-Verbindungsinformationen vom ASP.NET Core-Kestrel-Webserver:

Metrik: kestrel.active_connections
Name Instrument Typ Einheit (UCUM) Beschreibung
kestrel.active_connections UpDownCounter {connection} Die Anzahl der Verbindungen, die gerade auf dem Server aktiv sind.
attribute type Beschreibung Beispiele Anwesenheit
network.transport Zeichenfolge OSI-Transportschicht oder Prozessübergreifende Kommunikationsmethode. tcp; unix Always
network.type Zeichenfolge OSI-Netzwerkschicht oder Nicht-OSI-Entsprechung. ipv4; ipv6 Wenn der Datentransport tcp oder udp ist.
server.address Zeichenfolge Der Domänenname der Serveradresse, wenn er ohne Reverse-DNS-Lookup verfügbar ist; andernfalls die IP-Adresse oder der Socket-Name der Unix-Domain. example.com Always
server.port INT Die Portnummer des Servers 80; 8080; 443 Wenn der Datentransport tcp oder udp ist.

Ab .NET 8.0 verfügbar

Metrik: kestrel.connection.duration
Name Instrument Typ Einheit (UCUM) Beschreibung
kestrel.connection.duration Histogramm s Die Dauer der Verbindungen auf dem Server.
attribute type Beschreibung Beispiele Anwesenheit
error.type Zeichenfolge Vollständiger Name des Ausnahmetyps. System.OperationCanceledException; Contoso.MyException Ob eine Ausnahme ausgelöst wurde.
network.protocol.name Zeichenfolge OSI-Anwendungsschicht oder nicht-OSI-Entsprechung. http; web_sockets Always
network.protocol.version Zeichenfolge Version des in network.protocol.name angegebenen Protokolls. 1.1; 2 Always
network.transport Zeichenfolge OSI-Transportschicht oder Prozessübergreifende Kommunikationsmethode. tcp; unix Always
network.type Zeichenfolge OSI-Netzwerkschicht oder Nicht-OSI-Entsprechung. ipv4; ipv6 Wenn der Datentransport tcp oder udp ist.
server.address Zeichenfolge Der Domänenname der Serveradresse, wenn er ohne Reverse-DNS-Lookup verfügbar ist; andernfalls die IP-Adresse oder der Socket-Name der Unix-Domain. example.com Always
server.port INT Die Portnummer des Servers 80; 8080; 443 Wenn der Datentransport tcp oder udp ist.
tls.protocol.version Zeichenfolge Die TLS-Protokollversion. 1.2; 1.3 Ob die Verbindung mit TLS gesichert ist.

Da diese Metrik die Verbindungsdauer nachverfolgt und im Idealfall HTTP-Verbindungen für mehrere Anforderungen verwendet werden, sollten die Buckets länger sein als die für die Anforderungsdauer verwendeten Buckets. Mithilfe von „[ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300 ]“ wird beispielsweise ein oberer Bucket von 5 Minuten angegeben.

Ab .NET 8.0 verfügbar

Metrik: kestrel.rejected_connections
Name Instrument Typ Einheit (UCUM) Beschreibung
kestrel.rejected_connections Leistungsindikator {connection} Die Anzahl der vom Server abgelehnten Verbindungen.
attribute type Beschreibung Beispiele Anwesenheit
network.transport Zeichenfolge OSI-Transportschicht oder Prozessübergreifende Kommunikationsmethode. tcp; unix Always
network.type Zeichenfolge OSI-Netzwerkschicht oder Nicht-OSI-Entsprechung. ipv4; ipv6 Wenn der Datentransport tcp oder udp ist.
server.address Zeichenfolge Der Domänenname der Serveradresse, wenn er ohne Reverse-DNS-Lookup verfügbar ist; andernfalls die IP-Adresse oder der Socket-Name der Unix-Domain. example.com Always
server.port INT Die Portnummer des Servers 80; 8080; 443 Wenn der Datentransport tcp oder udp ist.

Verbindungen werden abgewiesen, wenn die derzeit aktive Anzahl den mit MaxConcurrentConnections konfigurierten Wert überschreitet.

Ab .NET 8.0 verfügbar

Metrik: kestrel.queued_connections
Name Instrument Typ Einheit (UCUM) Beschreibung
kestrel.queued_connections UpDownCounter {connection} Die Anzahl der Verbindungen, die sich derzeit in Warteschlangen befinden und auf ihren Start warten.
attribute type Beschreibung Beispiele Anwesenheit
network.transport Zeichenfolge OSI-Transportschicht oder Prozessübergreifende Kommunikationsmethode. tcp; unix Always
network.type Zeichenfolge OSI-Netzwerkschicht oder Nicht-OSI-Entsprechung. ipv4; ipv6 Wenn der Datentransport tcp oder udp ist.
server.address Zeichenfolge Der Domänenname der Serveradresse, wenn er ohne Reverse-DNS-Lookup verfügbar ist; andernfalls die IP-Adresse oder der Socket-Name der Unix-Domain. example.com Always
server.port INT Die Portnummer des Servers 80; 8080; 443 Wenn der Datentransport tcp oder udp ist.

Ab .NET 8.0 verfügbar

Metrik: kestrel.queued_requests
Name Instrument Typ Einheit (UCUM) Beschreibung
kestrel.queued_requests UpDownCounter {request} Die Anzahl der HTTP-Anforderungen auf Multiplex-Verbindungen (HTTP/2 und HTTP/3), die sich derzeit in der Warteschlange befinden und auf ihren Start warten.
attribute type Beschreibung Beispiele Anwesenheit
network.protocol.name Zeichenfolge OSI-Anwendungsschicht oder nicht-OSI-Entsprechung. http; web_sockets Always
network.protocol.version Zeichenfolge Version des in network.protocol.name angegebenen Protokolls. 1.1; 2 Always
network.transport Zeichenfolge OSI-Transportschicht oder Prozessübergreifende Kommunikationsmethode. tcp; unix Always
network.type Zeichenfolge OSI-Netzwerkschicht oder Nicht-OSI-Entsprechung. ipv4; ipv6 Wenn der Datentransport tcp oder udp ist.
server.address Zeichenfolge Der Domänenname der Serveradresse, wenn er ohne Reverse-DNS-Lookup verfügbar ist; andernfalls die IP-Adresse oder der Socket-Name der Unix-Domain. example.com Always
server.port INT Die Portnummer des Servers 80; 8080; 443 Wenn der Datentransport tcp oder udp ist.

Ab .NET 8.0 verfügbar

Metrik: kestrel.upgraded_connections
Name Instrument Typ Einheit (UCUM) Beschreibung
kestrel.upgraded_connections UpDownCounter {connection} Die Anzahl der Verbindungen, die derzeit aktualisiert werden (WebSockets).
attribute type Beschreibung Beispiele Anwesenheit
network.transport Zeichenfolge OSI-Transportschicht oder Prozessübergreifende Kommunikationsmethode. tcp; unix Always
network.type Zeichenfolge OSI-Netzwerkschicht oder Nicht-OSI-Entsprechung. ipv4; ipv6 Wenn der Datentransport tcp oder udp ist.
server.address Zeichenfolge Der Domänenname der Serveradresse, wenn er ohne Reverse-DNS-Lookup verfügbar ist; andernfalls die IP-Adresse oder der Socket-Name der Unix-Domain. example.com Always
server.port INT Die Portnummer des Servers 80; 8080; 443 Wenn der Datentransport tcp oder udp ist.

Der Zähler verfolgt nur HTTP/1.1-Verbindungen nach.

Ab .NET 8.0 verfügbar

Metrik: kestrel.tls_handshake.duration
Name Instrument Typ Einheit (UCUM) Beschreibung
kestrel.tls_handshake.duration Histogramm s Die Dauer von TLS-Handshakes auf dem Server.
attribute type Beschreibung Beispiele Anwesenheit
error.type Zeichenfolge Vollständiger Name des Ausnahmetyps. System.OperationCanceledException; Contoso.MyException Ob eine Ausnahme ausgelöst wurde.
network.transport Zeichenfolge OSI-Transportschicht oder Prozessübergreifende Kommunikationsmethode. tcp; unix Always
network.type Zeichenfolge OSI-Netzwerkschicht oder Nicht-OSI-Entsprechung. ipv4; ipv6 Wenn der Datentransport tcp oder udp ist.
server.address Zeichenfolge Der Domänenname der Serveradresse, wenn er ohne Reverse-DNS-Lookup verfügbar ist; andernfalls die IP-Adresse oder der Socket-Name der Unix-Domain. example.com Always
server.port INT Die Portnummer des Servers 80; 8080; 443 Wenn der Datentransport tcp oder udp ist.
tls.protocol.version Zeichenfolge Die TLS-Protokollversion. 1.2; 1.3 Ob die Verbindung mit TLS gesichert ist.

Bei Verwendung von OpenTelemetry werden die Standardbuckets für diese Metrik auf „[ 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 ]“ festgelegt.

Ab .NET 8.0 verfügbar

Metrik: kestrel.active_tls_handshakes
Name Instrument Typ Einheit (UCUM) Beschreibung
kestrel.active_tls_handshakes UpDownCounter {handshake} Die Anzahl der TLS-Handshakes, die derzeit auf dem Server ausgeführt werden.
attribute type Beschreibung Beispiele Anwesenheit
network.transport Zeichenfolge OSI-Transportschicht oder Prozessübergreifende Kommunikationsmethode. tcp; unix Always
network.type Zeichenfolge OSI-Netzwerkschicht oder Nicht-OSI-Entsprechung. ipv4; ipv6 Wenn der Datentransport tcp oder udp ist.
server.address Zeichenfolge Der Domänenname der Serveradresse, wenn er ohne Reverse-DNS-Lookup verfügbar ist; andernfalls die IP-Adresse oder der Socket-Name der Unix-Domain. example.com Always
server.port INT Die Portnummer des Servers 80; 8080; 443 Wenn der Datentransport tcp oder udp ist.

Ab .NET 8.0 verfügbar

Microsoft.AspNetCore.Http.Connections

Die Microsoft.AspNetCore.Http.Connections-Metriken melden Verbindungsinformationen von ASP.NET Core SignalR:

Metrik: signalr.server.connection.duration
Name Instrument Typ Einheit (UCUM) Beschreibung
signalr.server.connection.duration Histogramm s Die Dauer der Verbindungen auf dem Server.
attribute type Beschreibung Beispiele Anwesenheit
signalr.connection.status Zeichenfolge Der SignalR HTTP-Verbindungsabschlussstatus. app_shutdown; timeout Always
signalr.transport Zeichenfolge SignalR-Datentransporttyp web_sockets; long_polling Always

Ab .NET 8.0 verfügbar

Wert Beschreibung
normal_closure Die Verbindung wurde ordnungsgemäß geschlossen.
timeout Die Verbindung wurde aufgrund eines Timeouts geschlossen.
app_shutdown Die Verbindung wurde geschlossen, da die App heruntergefahren wird.

signalr.transport ist einer der folgenden Werte:

Wert Protokoll
server_sent_events vom Server gesendete Ereignisse
long_polling Lange Abrufe
web_sockets WebSocket

Da diese Metrik die Verbindungsdauer nachverfolgt und SignalR-Verbindungen im Idealfall dauerhaft sind, sollten die Buckets länger sein als die für die Anforderungsdauer verwendeten Buckets. Mithilfe von „[0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300]“ wird beispielsweise ein oberer Bucket von 5 Minuten angegeben.

Ab .NET 8.0 verfügbar

Metrik: signalr.server.active_connections
Name Instrument Typ Einheit (UCUM) Beschreibung
signalr.server.active_connections UpDownCounter {connection} Die Anzahl der Verbindungen, die gerade auf dem Server aktiv sind.
attribute type Beschreibung Beispiele Anwesenheit
signalr.connection.status Zeichenfolge Der SignalR HTTP-Verbindungsabschlussstatus. app_shutdown; timeout Always
signalr.transport Zeichenfolge SignalR-Datentransporttyp web_sockets; long_polling Always

Ab .NET 8.0 verfügbar