Udostępnij za pośrednictwem


Metryki ASP.NET Core

W tym artykule opisano metryki wbudowane dla platformy ASP.NET Core utworzone przy użyciu interfejsu System.Diagnostics.Metrics API. Aby uzyskać listę metryk opartych na starszym interfejsie API EventCounters , zobacz tutaj.

Napiwek

Aby uzyskać więcej informacji na temat zbierania, raportowania, wzbogacania i testowania metryk ASP.NET Core, zobacz Używanie metryk ASP.NET Core.

Microsoft.AspNetCore.Hosting

Microsoft.AspNetCore.Hosting Metryki raportują ogólne informacje o żądaniach HTTP odebranych przez ASP.NET Core:

Metryka: http.server.request.duration
Nazwisko Typ instrumentu Jednostka (UCUM) opis
http.server.request.duration Histogram s Mierzy czas trwania przychodzących żądań HTTP.
Atrybut Type Opis Przykłady Obecność
http.route string Dopasowana trasa. {controller}/{action}/{id?} Jeśli jest dostępna.
error.type string Opisuje klasę błędów zakończoną operacją. timeout; name_resolution_error; 500 Jeśli żądanie zakończyło się błędem.
http.request.method string Metoda żądania HTTP. GET; POST; HEAD Zawsze
http.response.status_code int Kod stanu odpowiedzi HTTP. 200 Jeśli został wysłany.
network.protocol.version string Wersja protokołu określonego w pliku network.protocol.name. 3.1.1 Zawsze
url.scheme string Składnik schematu identyfikatora URI identyfikujący używany protokół. http; https Zawsze
aspnetcore.request.is_unhandled Wartość logiczna Wartość true, gdy żądanie nie zostało obsłużone przez potok aplikacji. true Jeśli żądanie nie zostało nieobsługiwane.

Czas używany do obsługi przychodzącego żądania HTTP mierzony w warstwie hostingu ASP.NET Core. Pomiar czasu rozpoczyna się po utworzeniu bazowego hosta internetowego:

  • Wystarczająco przeanalizowano nagłówki żądań HTTP w strumieniu sieci przychodzącej, aby zidentyfikować nowe żądanie.
  • Zainicjowano struktury danych kontekstu, takie jak HttpContext.

Czas kończy się, gdy:

  • Potok obsługi ASP.NET Core jest wykonywany.
  • Wszystkie dane odpowiedzi zostały wysłane.
  • Struktury danych kontekstowych dla żądania są usuwane.

W przypadku korzystania z biblioteki OpenTelemetry domyślne zasobniki dla tej metryki są ustawione na [ 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 ].

Dostępne począwszy od: .NET 8.0.

Metryka: http.server.active_requests
Nazwisko Typ instrumentu Jednostka (UCUM) opis
http.server.active_requests UpDownCounter {request} Mierzy liczbę współbieżnych żądań HTTP, które są obecnie w locie.
Atrybut Type Opis Przykłady Obecność
http.request.method string Metoda żądania HTTP. [1] GET; POST; HEAD Zawsze
url.scheme string Składnik schematu identyfikatora URI identyfikujący używany protokół. http; https Zawsze

Dostępne począwszy od: .NET 8.0.

Microsoft.AspNetCore.Routing

Informacje Microsoft.AspNetCore.Routing o metrykach dotyczące routingu żądań HTTP do punktów końcowych ASP.NET Core:

Metryka: aspnetcore.routing.match_attempts
Nazwisko Typ instrumentu Jednostka (UCUM) opis
aspnetcore.routing.match_attempts Licznik {match_attempt} Liczba żądań, które próbowano dopasować do punktu końcowego.
Atrybut Type Opis Przykłady Obecność
aspnetcore.routing.match_status string Dopasuj wynik success; failure Zawsze
aspnetcore.routing.is_fallback_route boolean Wartość wskazująca, czy dopasowana trasa jest trasą rezerwową. True Jeśli trasa została pomyślnie dopasowana.
http.route string Dopasowana trasa {controller}/{action}/{id?} Jeśli trasa została pomyślnie dopasowana.

Dostępne począwszy od: .NET 8.0.

Microsoft.AspNetCore.Diagnostics

Microsoft.AspNetCore.Diagnostics Metryki raportują informacje diagnostyczne z oprogramowania pośredniczącego obsługującego błędy platformy ASP.NET Core:

Metryka: aspnetcore.diagnostics.exceptions
Nazwisko Typ instrumentu Jednostka (UCUM) opis
aspnetcore.diagnostics.exceptions Licznik {exception} Liczba wyjątków przechwyconych przez oprogramowanie pośredniczące obsługujące wyjątki.
Atrybut Type Opis Przykłady Obecność
aspnetcore.diagnostics.exception.result string Wynik obsługi oprogramowania pośredniczącego ASP.NET Core handled; unhandled Zawsze
aspnetcore.diagnostics.handler.type string Pełna nazwa typu implementacji IExceptionHandler , która obsłużyła wyjątek. Contoso.MyHandler Jeśli wyjątek został obsłużony przez tę procedurę obsługi.
exception.type string Pełna nazwa typu wyjątku. System.OperationCanceledException; Contoso.MyException Zawsze

Dostępne począwszy od: .NET 8.0.

Microsoft.AspNetCore.RateLimiting

Microsoft.AspNetCore.RateLimiting Metryki zgłaszają informacje ograniczające szybkość z oprogramowania pośredniczącego ASP.NET Core:

Metryka: aspnetcore.rate_limiting.active_request_leases
Nazwisko Typ instrumentu Jednostka (UCUM) opis
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} Liczba żądań, które są obecnie aktywne na serwerze, na których jest przechowywana dzierżawa ograniczająca szybkość.
Atrybut Type Opis Przykłady Obecność
aspnetcore.rate_limiting.policy string Nazwa zasad ograniczania szybkości. fixed; sliding; token Jeśli pasujący punkt końcowy żądania miał zasady ograniczania szybkości.

Dostępne począwszy od: .NET 8.0.

Metryka: aspnetcore.rate_limiting.request_lease.duration
Nazwisko Typ instrumentu Jednostka (UCUM) opis
aspnetcore.rate_limiting.request_lease.duration Histogram s Czas trwania dzierżawy ograniczania szybkości przechowywanej przez żądania na serwerze.
Atrybut Type Opis Przykłady Obecność
aspnetcore.rate_limiting.policy string Nazwa zasad ograniczania szybkości. fixed; sliding; token Jeśli pasujący punkt końcowy żądania miał zasady ograniczania szybkości.

Dostępne począwszy od: .NET 8.0.

Metryka: aspnetcore.rate_limiting.queued_requests
Nazwisko Typ instrumentu Jednostka (UCUM) opis
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} Liczba żądań, które są obecnie w kolejce oczekujące na uzyskanie dzierżawy ograniczającej szybkość.
Atrybut Type Opis Przykłady Obecność
aspnetcore.rate_limiting.policy string Nazwa zasad ograniczania szybkości. fixed; sliding; token Jeśli pasujący punkt końcowy żądania miał zasady ograniczania szybkości.

Dostępne począwszy od: .NET 8.0.

Metryka: aspnetcore.rate_limiting.request.time_in_queue
Nazwisko Typ instrumentu Jednostka (UCUM) opis
aspnetcore.rate_limiting.request.time_in_queue Histogram s Czas, przez który żądanie spędziło w kolejce oczekiwanie na uzyskanie dzierżawy ograniczającej szybkość.
Atrybut Type Opis Przykłady Obecność
aspnetcore.rate_limiting.policy string Nazwa zasad ograniczania szybkości. fixed; sliding; token Jeśli pasujący punkt końcowy żądania miał zasady ograniczania szybkości.
aspnetcore.rate_limiting.result string Wynik ograniczania szybkości pokazuje, czy dzierżawa została nabyta, czy zawiera przyczynę odrzucenia. acquired; request_canceled Zawsze

Dostępne począwszy od: .NET 8.0.

Metryka: aspnetcore.rate_limiting.requests
Nazwisko Typ instrumentu Jednostka (UCUM) opis
aspnetcore.rate_limiting.requests Licznik {request} Liczba żądań, które próbowały uzyskać dzierżawę ograniczającą szybkość.
Atrybut Type Opis Przykłady Obecność
aspnetcore.rate_limiting.policy string Nazwa zasad ograniczania szybkości. fixed; sliding; token Jeśli pasujący punkt końcowy żądania miał zasady ograniczania szybkości.
aspnetcore.rate_limiting.result string Wynik ograniczania szybkości pokazuje, czy dzierżawa została nabyta, czy zawiera przyczynę odrzucenia. acquired; request_canceled Zawsze

Dostępne począwszy od: .NET 8.0.

Microsoft.AspNetCore.HeaderParsing

Informacje Microsoft.AspNetCore.HeaderParsing raportu metryk dotyczące analizowania nagłówka ASP.NET Core:

Metryka: aspnetcore.header_parsing.parse_errors
Nazwisko Typ instrumentu Jednostka (UCUM) opis
aspnetcore.header_parsing.parse_errors Licznik {parse_error} Liczba błędów, które wystąpiły podczas analizowania nagłówków żądań HTTP.
Atrybut Type Opis Przykłady Obecność
aspnetcore.header_parsing.header.name string Nazwa nagłówka. Content-Type Zawsze
error.type string Komunikat o błędzie. Unable to parse media type value. Zawsze

Dostępne począwszy od: .NET 8.0.

Metryka: aspnetcore.header_parsing.cache_accesses

Metryka jest emitowana tylko dla analizatorów nagłówków żądań HTTP obsługujących buforowanie.

Nazwisko Typ instrumentu Jednostka (UCUM) opis
aspnetcore.header_parsing.cache_accesses Licznik {cache_access} Liczba prób uzyskania dostępu do pamięci podręcznej przechowujące przeanalizowane wartości nagłówka.
Atrybut Type Opis Przykłady Obecność
aspnetcore.header_parsing.header.name string Nazwa nagłówka. Content-Type Zawsze
aspnetcore.header_parsing.cache_access.type string Wartość wskazująca, czy wartość nagłówka została znaleziona w pamięci podręcznej, czy nie. Hit; Miss Zawsze

Dostępne począwszy od: .NET 8.0.

Microsoft.AspNetCore.Server.Kestrel

Microsoft.AspNetCore.Server.Kestrel Metryki raportują informacje o połączeniu HTTP z serwera internetowego ASP.NET Core Kestrel:

Metryka: kestrel.active_connections
Nazwisko Typ instrumentu Jednostka (UCUM) opis
kestrel.active_connections UpDownCounter {connection} Liczba połączeń, które są obecnie aktywne na serwerze.
Atrybut Type Opis Przykłady Obecność
network.transport string Warstwa transportu OSI lub metoda komunikacji między procesami. tcp; unix Zawsze
network.type string Warstwa sieci OSI lub odpowiednik inny niż OSI. ipv4; ipv6 Jeśli transport to tcp lub udp.
server.address string Nazwa domeny adresu serwera, jeśli jest dostępna bez wstecznego wyszukiwania DNS; w przeciwnym razie adres IP lub nazwa gniazda domeny systemu Unix. example.com Zawsze
server.port int Numer portu serwera 80; 8080; 443 Jeśli transport to tcp lub udp.

Dostępne począwszy od: .NET 8.0.

Metryka: kestrel.connection.duration
Nazwisko Typ instrumentu Jednostka (UCUM) opis
kestrel.connection.duration Histogram s Czas trwania połączeń na serwerze.
Atrybut Type Opis Przykłady Obecność
error.type string Opisuje typ błędu, z którym zakończyło się połączenie, lub nieobsługiwany typ wyjątku zgłoszony podczas potoku połączenia. Znane błędy połączeń można znaleźć w artykule Semantic Conventions for Kestrel web server metrics (Konwencje semantyczne dotyczące metryk serwera internetowego Kestrel). connection_reset; invalid_request_headers; System.OperationCanceledException Jeśli połączenie zakończyło się znanym błędem lub został zgłoszony wyjątek.
network.protocol.name string Warstwa aplikacji OSI lub odpowiednik inny niż OSI. http; web_sockets Zawsze
network.protocol.version string Wersja protokołu określonego w pliku network.protocol.name. 1.1; 2 Zawsze
network.transport string Warstwa transportu OSI lub metoda komunikacji między procesami. tcp; unix Zawsze
network.type string Warstwa sieci OSI lub odpowiednik inny niż OSI. ipv4; ipv6 Jeśli transport to tcp lub udp.
server.address string Nazwa domeny adresu serwera, jeśli jest dostępna bez wstecznego wyszukiwania DNS; w przeciwnym razie adres IP lub nazwa gniazda domeny systemu Unix. example.com Zawsze
server.port int Numer portu serwera 80; 8080; 443 Jeśli transport to tcp lub udp.
tls.protocol.version string Wersja protokołu TLS. 1.2; 1.3 Jeśli połączenie jest zabezpieczone przy użyciu protokołu TLS.

Ponieważ ta metryka śledzi czas trwania połączenia, a w idealnym przypadku połączenia HTTP są używane dla wielu żądań, zasobniki powinny być dłuższe niż te używane przez czas trwania żądań. Na przykład użycie wartości [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] zapewnia górną zasobnik 5 minut.

Począwszy od platformy .NET 9, gdy połączenie kończy się znanym błędem, error.type wartość atrybutu jest ustawiona na znany typ błędu. Znane błędy połączeń można znaleźć w artykule Semantic Conventions for Kestrel web server metrics (Konwencje semantyczne dotyczące metryk serwera internetowego Kestrel).

Dostępne począwszy od: .NET 8.

Metryka: kestrel.rejected_connections
Nazwisko Typ instrumentu Jednostka (UCUM) opis
kestrel.rejected_connections Licznik {connection} Liczba połączeń odrzuconych przez serwer.
Atrybut Type Opis Przykłady Obecność
network.transport string Warstwa transportu OSI lub metoda komunikacji między procesami. tcp; unix Zawsze
network.type string Warstwa sieci OSI lub odpowiednik inny niż OSI. ipv4; ipv6 Jeśli transport to tcp lub udp.
server.address string Nazwa domeny adresu serwera, jeśli jest dostępna bez wstecznego wyszukiwania DNS; w przeciwnym razie adres IP lub nazwa gniazda domeny systemu Unix. example.com Zawsze
server.port int Numer portu serwera 80; 8080; 443 Jeśli transport to tcp lub udp.

Połączenia są odrzucane, gdy aktualnie aktywna liczba przekracza wartość skonfigurowaną za pomocą MaxConcurrentConnectionspolecenia .

Dostępne począwszy od: .NET 8.0.

Metryka: kestrel.queued_connections
Nazwisko Typ instrumentu Jednostka (UCUM) opis
kestrel.queued_connections UpDownCounter {connection} Liczba połączeń, które są obecnie w kolejce i oczekuje na uruchomienie.
Atrybut Type Opis Przykłady Obecność
network.transport string Warstwa transportu OSI lub metoda komunikacji między procesami. tcp; unix Zawsze
network.type string Warstwa sieci OSI lub odpowiednik inny niż OSI. ipv4; ipv6 Jeśli transport to tcp lub udp.
server.address string Nazwa domeny adresu serwera, jeśli jest dostępna bez wstecznego wyszukiwania DNS; w przeciwnym razie adres IP lub nazwa gniazda domeny systemu Unix. example.com Zawsze
server.port int Numer portu serwera 80; 8080; 443 Jeśli transport to tcp lub udp.

Dostępne począwszy od: .NET 8.0.

Metryka: kestrel.queued_requests
Nazwisko Typ instrumentu Jednostka (UCUM) opis
kestrel.queued_requests UpDownCounter {request} Liczba żądań HTTP dla połączeń multipleksowanych (HTTP/2 i HTTP/3), które są obecnie kolejkowane i oczekują na uruchomienie.
Atrybut Type Opis Przykłady Obecność
network.protocol.name string Warstwa aplikacji OSI lub odpowiednik inny niż OSI. http; web_sockets Zawsze
network.protocol.version string Wersja protokołu określonego w pliku network.protocol.name. 1.1; 2 Zawsze
network.transport string Warstwa transportu OSI lub metoda komunikacji między procesami. tcp; unix Zawsze
network.type string Warstwa sieci OSI lub odpowiednik inny niż OSI. ipv4; ipv6 Jeśli transport to tcp lub udp.
server.address string Nazwa domeny adresu serwera, jeśli jest dostępna bez wstecznego wyszukiwania DNS; w przeciwnym razie adres IP lub nazwa gniazda domeny systemu Unix. example.com Zawsze
server.port int Numer portu serwera 80; 8080; 443 Jeśli transport to tcp lub udp.

Dostępne począwszy od: .NET 8.0.

Metryka: kestrel.upgraded_connections
Nazwisko Typ instrumentu Jednostka (UCUM) opis
kestrel.upgraded_connections UpDownCounter {connection} Liczba połączeń, które są obecnie uaktualnione (WebSocket).
Atrybut Type Opis Przykłady Obecność
network.transport string Warstwa transportu OSI lub metoda komunikacji między procesami. tcp; unix Zawsze
network.type string Warstwa sieci OSI lub odpowiednik inny niż OSI. ipv4; ipv6 Jeśli transport to tcp lub udp.
server.address string Nazwa domeny adresu serwera, jeśli jest dostępna bez wstecznego wyszukiwania DNS; w przeciwnym razie adres IP lub nazwa gniazda domeny systemu Unix. example.com Zawsze
server.port int Numer portu serwera 80; 8080; 443 Jeśli transport to tcp lub udp.

Licznik śledzi tylko połączenia HTTP/1.1.

Dostępne począwszy od: .NET 8.0.

Metryka: kestrel.tls_handshake.duration
Nazwisko Typ instrumentu Jednostka (UCUM) opis
kestrel.tls_handshake.duration Histogram s Czas trwania uzgadniania protokołu TLS na serwerze.
Atrybut Type Opis Przykłady Obecność
error.type string Pełna nazwa typu wyjątku. System.OperationCanceledException; Contoso.MyException Jeśli zgłoszono wyjątek.
network.transport string Warstwa transportu OSI lub metoda komunikacji między procesami. tcp; unix Zawsze
network.type string Warstwa sieci OSI lub odpowiednik inny niż OSI. ipv4; ipv6 Jeśli transport to tcp lub udp.
server.address string Nazwa domeny adresu serwera, jeśli jest dostępna bez wstecznego wyszukiwania DNS; w przeciwnym razie adres IP lub nazwa gniazda domeny systemu Unix. example.com Zawsze
server.port int Numer portu serwera 80; 8080; 443 Jeśli transport to tcp lub udp.
tls.protocol.version string Wersja protokołu TLS. 1.2; 1.3 Jeśli połączenie jest zabezpieczone przy użyciu protokołu TLS.

W przypadku korzystania z biblioteki OpenTelemetry domyślne zasobniki dla tej metic są ustawione na [ 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 ].

Dostępne począwszy od: .NET 8.0.

Metryka: kestrel.active_tls_handshakes
Nazwisko Typ instrumentu Jednostka (UCUM) opis
kestrel.active_tls_handshakes UpDownCounter {handshake} Liczba uzgadniań protokołu TLS, które są obecnie w toku na serwerze.
Atrybut Type Opis Przykłady Obecność
network.transport string Warstwa transportu OSI lub metoda komunikacji między procesami. tcp; unix Zawsze
network.type string Warstwa sieci OSI lub odpowiednik inny niż OSI. ipv4; ipv6 Jeśli transport to tcp lub udp.
server.address string Nazwa domeny adresu serwera, jeśli jest dostępna bez wstecznego wyszukiwania DNS; w przeciwnym razie adres IP lub nazwa gniazda domeny systemu Unix. example.com Zawsze
server.port int Numer portu serwera 80; 8080; 443 Jeśli transport to tcp lub udp.

Dostępne począwszy od: .NET 8.0.

Microsoft.AspNetCore.Http.Connections

Informacje o połączeniu Microsoft.AspNetCore.Http.Connections raportu metryk z ASP.NET Core SignalR:

Metryka: signalr.server.connection.duration
Nazwisko Typ instrumentu Jednostka (UCUM) opis
signalr.server.connection.duration Histogram s Czas trwania połączeń na serwerze.
Atrybut Type Opis Przykłady Obecność
signalr.connection.status string Stan zamknięcia połączenia HTTP usługi SignalR. app_shutdown; timeout Zawsze
signalr.transport string Typ transportu usługi SignalR web_sockets; long_polling Zawsze

Dostępne począwszy od: .NET 8.0.

Wartość Opis
normal_closure Połączenie zostało zamknięte normalnie.
timeout Połączenie zostało zamknięte z powodu przekroczenia limitu czasu.
app_shutdown Połączenie zostało zamknięte, ponieważ aplikacja jest zamykana.

signalr.transport jest jednym z następujących elementów:

Wartość Protokół
server_sent_events zdarzenia wysyłane przez serwer
long_polling Długie sondowanie
web_sockets WebSocket

Ponieważ ta metryka śledzi czas trwania połączenia, a w idealnym przypadku połączenia usługi SignalR są trwałe, zasobniki powinny być dłuższe niż te używane przez czasy trwania żądań. Na przykład użycie wartości [0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] zapewnia górny zasobnik 5 minut.

Dostępne począwszy od: .NET 8.0.

Metryka: signalr.server.active_connections
Nazwisko Typ instrumentu Jednostka (UCUM) opis
signalr.server.active_connections UpDownCounter {connection} Liczba połączeń, które są obecnie aktywne na serwerze.
Atrybut Type Opis Przykłady Obecność
signalr.connection.status string Stan zamknięcia połączenia HTTP usługi SignalR. app_shutdown; timeout Zawsze
signalr.transport string Typ transportu usługi SignalR web_sockets; long_polling Zawsze

Dostępne począwszy od: .NET 8.0.