Metryki ASP.NET Core
Artykuł 11/16/2024
Współautorzy: 8
Opinia
W tym artykule
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
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
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
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.
Informacje Microsoft.AspNetCore.HeaderParsing
raportu metryk dotyczące analizowania nagłówka ASP.NET Core:
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 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
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
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ą MaxConcurrentConnections
polecenia .
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
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
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:
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
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.