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 Beschreibt einen Fehlertyp, mit dem die Verbindung beendet wurde, oder der nicht behandelte Ausnahmetyp, der während der Verbindungspipeline ausgelöst wurde. Bekannte Verbindungsfehler finden Sie in den Semantikkonventionen für Kestrel-Webservermetriken. connection_reset; invalid_request_headers; System.OperationCanceledException Wenn die Verbindung mit einem bekannten Fehler beendet wurde oder 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 9 wird der error.type Attributwert auf den bekannten Fehlertyp festgelegt, wenn eine Verbindung mit einem bekannten Fehler endet. Bekannte Verbindungsfehler finden Sie in den Semantikkonventionen für Kestrel-Webservermetriken.

Verfügbar ab: .NET 8.

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