Share via


ASP.NET Core 메트릭

이 문서에서는 System.Diagnostics.Metrics API를 사용하여 생성된 ASP.NET Core용 기본 제공 메트릭에 대해 설명합니다. 이전 EventCounters API를 기반으로 한 메트릭 목록을 보려면 여기를 참조하세요.

ASP.NET Core 메트릭을 수집, 보고, 보강 및 테스트하는 방법에 대한 자세한 내용은 ASP.NET Core 메트릭 사용을 참조하세요.

Microsoft.AspNetCore.Hosting

Microsoft.AspNetCore.Hosting 메트릭은 ASP.NET Core에서 수신한 HTTP 요청에 대한 개략적인 정보를 보고합니다.

메트릭: http.server.request.duration
이름 계측 유형 단위(UCUM) 설명
http.server.request.duration 히스토그램 s 인바운드 HTTP 요청 기간을 측정합니다.
Attribute Type 설명 예제 현재 상태
http.route string 일치하는 경로입니다. {controller}/{action}/{id?} 사용 가능한 경우.
error.type string 작업이 종료된 오류 클래스를 설명합니다. 오류로 인해 요청이 종료된 경우.
http.request.method string HTTP 요청 메서드입니다. Always
http.response.status_code int HTTP 응답 상태 코드. 200 하나 보낸 경우.
network.protocol.version string network.protocol.name에 지정된 프로토콜 버전입니다. 3.1.1 Always
url.scheme string 사용된 프로토콜을 식별하는 URI 체계 구성 요소입니다. http: https Always
aspnetcore.request.is_unhandled Boolean 애플리케이션 파이프라인에서 요청이 처리되지 않은 경우 True입니다. true 요청이 처리되지 않은 경우.

ASP.NET Core의 호스팅 계층에서 측정된 인바운드 HTTP 요청을 처리하는 데 사용되는 시간입니다. 기본 웹 호스트가 다음을 수행하면 시간 측정이 시작됩니다.

  • 새 요청을 식별하기 위해 인바운드 네트워크 스트림의 HTTP 요청 헤더를 충분히 구문 분석했습니다.
  • HttpContext와 같은 컨텍스트 데이터 구조를 초기화했습니다.

다음과 같은 경우 시간이 종료됩니다.

  • ASP.NET Core 처리기 파이프라인 실행이 완료되었습니다.
  • 모든 응답 데이터가 전송되었습니다.
  • 요청에 대한 컨텍스트 데이터 구조를 삭제하는 중입니다.

OpenTelemetry를 사용할 때 이 메트릭의 기본 버킷은 [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]으로 설정됩니다.

사용 가능 버전: .NET 8.0.

메트릭: http.server.active_requests
이름 계측 유형 단위(UCUM) 설명
http.server.active_requests UpDownCounter {request} 현재 진행 중인 동시 HTTP 요청 수를 측정합니다.
Attribute Type 설명 예제 현재 상태
http.request.method string HTTP 요청 메서드. [1] Always
url.scheme string 사용된 프로토콜을 식별하는 URI 체계 구성 요소입니다. http: https Always

사용 가능 버전: .NET 8.0.

Microsoft.AspNetCore.Routing

Microsoft.AspNetCore.Routing 메트릭은 ASP.NET Core 엔드포인트로의 HTTP 요청 라우팅에 대한 정보를 보고합니다.

메트릭: aspnetcore.routing.match_attempts
이름 계측 유형 단위(UCUM) 설명
aspnetcore.routing.match_attempts 카운터 {match_attempt} 엔드포인트와 일치시키려고 시도된 요청 수입니다.
Attribute Type 설명 예제 현재 상태
aspnetcore.routing.match_status string 일치 결과 success: failure Always
aspnetcore.routing.is_fallback_route 부울 값 일치하는 경로가 대체 경로인지 여부를 나타내는 값입니다. True 경로가 성공적으로 일치된 경우.
http.route string 일치하는 경로 {controller}/{action}/{id?} 경로가 성공적으로 일치된 경우.

사용 가능 버전: .NET 8.0.

Microsoft.AspNetCore.Diagnostics

Microsoft.AspNetCore.Diagnostics 메트릭은 ASP.NET Core 오류 처리 미들웨어의 진단 정보를 보고합니다.

메트릭: aspnetcore.diagnostics.exceptions
이름 계측 유형 단위(UCUM) 설명
aspnetcore.diagnostics.exceptions 카운터 {exception} 예외 처리 미들웨어에서 catch한 예외 수입니다.
Attribute Type 설명 예제 현재 상태
aspnetcore.diagnostics.exception.result string ASP.NET Core 예외 미들웨어 처리 결과 handled: unhandled Always
aspnetcore.diagnostics.handler.type string 예외를 처리한 IExceptionHandler 구현의 전체 형식 이름입니다. Contoso.MyHandler 이 처리기가 예외를 처리한 경우.
exception.type string 예외 형식의 전체 이름입니다. System.OperationCanceledException: Contoso.MyException Always

사용 가능 버전: .NET 8.0.

Microsoft.AspNetCore.RateLimiting

Microsoft.AspNetCore.RateLimiting 메트릭은 ASP.NET Core 속도 제한 미들웨어의 속도 제한 정보를 보고합니다.

메트릭: aspnetcore.rate_limiting.active_request_leases
이름 계측 유형 단위(UCUM) 설명
aspnetcore.rate_limiting.active_request_leases UpDownCounter {request} 속도 제한 임대를 보유하는 서버에서 현재 활성화된 요청 수입니다.
Attribute Type 설명 예제 현재 상태
aspnetcore.rate_limiting.policy string 속도 제한 정책 이름입니다. 요청에 대해 일치하는 엔드포인트에 속도 제한 정책이 있는 경우.

사용 가능 버전: .NET 8.0.

메트릭: aspnetcore.rate_limiting.request_lease.duration
이름 계측 유형 단위(UCUM) 설명
aspnetcore.rate_limiting.request_lease.duration 히스토그램 s 서버의 요청에 의해 유지되는 속도 제한 임대 기간입니다.
Attribute Type 설명 예제 현재 상태
aspnetcore.rate_limiting.policy string 속도 제한 정책 이름입니다. 요청에 대해 일치하는 엔드포인트에 속도 제한 정책이 있는 경우.

사용 가능 버전: .NET 8.0.

메트릭: aspnetcore.rate_limiting.queued_requests
이름 계측 유형 단위(UCUM) 설명
aspnetcore.rate_limiting.queued_requests UpDownCounter {request} 현재 속도 제한 임대를 획득하기 위해 대기 중인 요청 수입니다.
Attribute Type 설명 예제 현재 상태
aspnetcore.rate_limiting.policy string 속도 제한 정책 이름입니다. 요청에 대해 일치하는 엔드포인트에 속도 제한 정책이 있는 경우.

사용 가능 버전: .NET 8.0.

메트릭: aspnetcore.rate_limiting.request.time_in_queue
이름 계측 유형 단위(UCUM) 설명
aspnetcore.rate_limiting.request.time_in_queue 히스토그램 s 요청이 속도 제한 임대를 획득하기 위해 큐에서 소비한 시간입니다.
Attribute Type 설명 예제 현재 상태
aspnetcore.rate_limiting.policy string 속도 제한 정책 이름입니다. 요청에 대해 일치하는 엔드포인트에 속도 제한 정책이 있는 경우.
aspnetcore.rate_limiting.result string 속도 제한 결과에는 임대 획득 여부 또는 거부 사유가 포함되어 있는지가 표시됨 acquired: request_canceled Always

사용 가능 버전: .NET 8.0.

메트릭: aspnetcore.rate_limiting.requests
이름 계측 유형 단위(UCUM) 설명
aspnetcore.rate_limiting.requests 카운터 {request} 속도 제한 임대를 획득하려고 시도한 요청 수입니다.
Attribute Type 설명 예제 현재 상태
aspnetcore.rate_limiting.policy string 속도 제한 정책 이름입니다. 요청에 대해 일치하는 엔드포인트에 속도 제한 정책이 있는 경우.
aspnetcore.rate_limiting.result string 속도 제한 결과에는 임대 획득 여부 또는 거부 사유가 포함되어 있는지가 표시됨 acquired: request_canceled Always

사용 가능 버전: .NET 8.0.

Microsoft.AspNetCore.HeaderParsing

Microsoft.AspNetCore.HeaderParsing 메트릭은 ASP.NET Core 헤더 구문 분석에 대한 정보를 보고합니다.

메트릭: aspnetcore.header_parsing.parse_errors
이름 계측 유형 단위(UCUM) 설명
aspnetcore.header_parsing.parse_errors 카운터 {parse_error} HTTP 요청 헤더를 구문 분석할 때 발생한 오류 수입니다.
Attribute Type 설명 예제 현재 상태
aspnetcore.header_parsing.header.name string 헤더 이름입니다. Content-Type Always
error.type string 오류 메시지입니다. Unable to parse media type value. Always

사용 가능 버전: .NET 8.0.

메트릭: aspnetcore.header_parsing.cache_accesses

캐싱을 지원하는 HTTP 요청 헤더 파서에 대해서만 메트릭이 내보내집니다.

이름 계측 유형 단위(UCUM) 설명
aspnetcore.header_parsing.cache_accesses 카운터 {cache_access} 구문 분석된 헤더 값을 저장하는 캐시에 액세스한 횟수입니다.
Attribute Type 설명 예제 현재 상태
aspnetcore.header_parsing.header.name string 헤더 이름입니다. Content-Type Always
aspnetcore.header_parsing.cache_access.type string 헤더의 값이 캐시에서 발견되었는지 여부를 나타내는 값입니다. Hit: Miss Always

사용 가능 버전: .NET 8.0.

Microsoft.AspNetCore.Server.Kestrel

Microsoft.AspNetCore.Server.Kestrel 메트릭은 ASP.NET Core Kestrel 웹 서버의 HTTP 연결 정보를 보고합니다.

메트릭: kestrel.active_connections
이름 계측 유형 단위(UCUM) 설명
kestrel.active_connections UpDownCounter {connection} 현재 서버에서 활성화된 연결 수입니다.
Attribute Type 설명 예제 현재 상태
network.transport string OSI 전송 계층 또는 프로세스 간 통신 방법. tcp: unix Always
network.type string OSI 네트워크 계층 또는 비OSI와 동등합니다. ipv4: ipv6 전송 수단이 tcp 또는 udp인 경우.
server.address string 역방향 DNS 조회 없이 사용 가능한 경우 서버 주소 도메인 이름. 그렇지 않으면 IP 주소 또는 Unix 도메인 소켓 이름입니다. example.com Always
server.port int 서버 포트 번호 전송 수단이 tcp 또는 udp인 경우.

사용 가능 버전: .NET 8.0.

메트릭: kestrel.connection.duration
이름 계측 유형 단위(UCUM) 설명
kestrel.connection.duration 히스토그램 s 서버의 연결 기간입니다.
Attribute Type 설명 예제 현재 상태
error.type string 예외 형식의 전체 이름입니다. System.OperationCanceledException: Contoso.MyException 예외가 throw된 경우.
network.protocol.name string OSI 애플리케이션 계층 또는 비OSI와 동등합니다. http: web_sockets Always
network.protocol.version string network.protocol.name에 지정된 프로토콜 버전입니다. 1.1: 2 Always
network.transport string OSI 전송 계층 또는 프로세스 간 통신 방법. tcp: unix Always
network.type string OSI 네트워크 계층 또는 비OSI와 동등합니다. ipv4: ipv6 전송 수단이 tcp 또는 udp인 경우.
server.address string 역방향 DNS 조회 없이 사용 가능한 경우 서버 주소 도메인 이름. 그렇지 않으면 IP 주소 또는 Unix 도메인 소켓 이름입니다. example.com Always
server.port int 서버 포트 번호 전송 수단이 tcp 또는 udp인 경우.
tls.protocol.version string TLS 프로토콜 버전입니다. 1.2: 1.3 연결이 TLS로 보호되는 경우.

이 메트릭은 연결 기간을 추적하고 이상적으로는 여러 요청에 http 연결이 사용되므로 버킷은 요청 기간에 사용된 것보다 길어야 합니다. 예를 들어, [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300]을 사용하면 5분의 상위 버킷이 제공됩니다.

사용 가능 버전: .NET 8.0.

메트릭: kestrel.rejected_connections
이름 계측 유형 단위(UCUM) 설명
kestrel.rejected_connections 카운터 {connection} 서버에서 거부한 연결 수입니다.
Attribute Type 설명 예제 현재 상태
network.transport string OSI 전송 계층 또는 프로세스 간 통신 방법. tcp: unix Always
network.type string OSI 네트워크 계층 또는 비OSI와 동등합니다. ipv4: ipv6 전송 수단이 tcp 또는 udp인 경우.
server.address string 역방향 DNS 조회 없이 사용 가능한 경우 서버 주소 도메인 이름. 그렇지 않으면 IP 주소 또는 Unix 도메인 소켓 이름입니다. example.com Always
server.port int 서버 포트 번호 전송 수단이 tcp 또는 udp인 경우.

현재 활성 개수가 MaxConcurrentConnections로 구성된 값을 초과하면 연결이 거부됩니다.

사용 가능 버전: .NET 8.0.

메트릭: kestrel.queued_connections
이름 계측 유형 단위(UCUM) 설명
kestrel.queued_connections UpDownCounter {connection} 현재 큐에 있고 시작을 기다리고 있는 연결 수입니다.
Attribute Type 설명 예제 현재 상태
network.transport string OSI 전송 계층 또는 프로세스 간 통신 방법. tcp: unix Always
network.transport string OSI 네트워크 계층 또는 비OSI와 동등합니다. ipv4: ipv6 전송 수단이 tcp 또는 udp인 경우.
server.address string 역방향 DNS 조회 없이 사용 가능한 경우 서버 주소 도메인 이름. 그렇지 않으면 IP 주소 또는 Unix 도메인 소켓 이름입니다. example.com Always
server.port int 서버 포트 번호 전송 수단이 tcp 또는 udp인 경우.

사용 가능 버전: .NET 8.0.

메트릭: kestrel.queued_requests
이름 계측 유형 단위(UCUM) 설명
kestrel.queued_requests UpDownCounter {request} 현재 큐에 있고 시작을 기다리고 있는 다중 연결(HTTP/2 및 HTTP/3)에 대한 HTTP 요청 수입니다.
Attribute Type 설명 예제 현재 상태
network.protocol.name string OSI 애플리케이션 계층 또는 비OSI와 동등합니다. http: web_sockets Always
network.protocol.version string network.protocol.name에 지정된 프로토콜 버전입니다. 1.1: 2 Always
network.transport string OSI 전송 계층 또는 프로세스 간 통신 방법. tcp: unix Always
network.transport string OSI 네트워크 계층 또는 비OSI와 동등합니다. ipv4: ipv6 전송 수단이 tcp 또는 udp인 경우.
server.address string 역방향 DNS 조회 없이 사용 가능한 경우 서버 주소 도메인 이름. 그렇지 않으면 IP 주소 또는 Unix 도메인 소켓 이름입니다. example.com Always
server.port int 서버 포트 번호 전송 수단이 tcp 또는 udp인 경우.

사용 가능 버전: .NET 8.0.

메트릭: kestrel.upgraded_connections
이름 계측 유형 단위(UCUM) 설명
kestrel.upgraded_connections UpDownCounter {connection} 현재 업그레이드된 연결 수(WebSocket)입니다.
Attribute Type 설명 예제 현재 상태
network.transport string OSI 전송 계층 또는 프로세스 간 통신 방법. tcp: unix Always
network.transport string OSI 네트워크 계층 또는 비OSI와 동등합니다. ipv4: ipv6 전송 수단이 tcp 또는 udp인 경우.
server.address string 역방향 DNS 조회 없이 사용 가능한 경우 서버 주소 도메인 이름. 그렇지 않으면 IP 주소 또는 Unix 도메인 소켓 이름입니다. example.com Always
server.port int 서버 포트 번호 전송 수단이 tcp 또는 udp인 경우.

카운터는 HTTP/1.1 연결만 추적합니다.

사용 가능 버전: .NET 8.0.

메트릭: kestrel.tls_handshake.duration
이름 계측 유형 단위(UCUM) 설명
kestrel.tls_handshake.duration 히스토그램 s 서버의 TLS 핸드셰이크 기간입니다.
Attribute Type 설명 예제 현재 상태
error.type string 예외 형식의 전체 이름입니다. System.OperationCanceledException: Contoso.MyException 예외가 throw된 경우.
network.transport string OSI 전송 계층 또는 프로세스 간 통신 방법. tcp: unix Always
network.transport string OSI 네트워크 계층 또는 비OSI와 동등합니다. ipv4: ipv6 전송 수단이 tcp 또는 udp인 경우.
server.address string 역방향 DNS 조회 없이 사용 가능한 경우 서버 주소 도메인 이름. 그렇지 않으면 IP 주소 또는 Unix 도메인 소켓 이름입니다. example.com Always
server.port int 서버 포트 번호 전송 수단이 tcp 또는 udp인 경우.
tls.protocol.version string TLS 프로토콜 버전입니다. 1.2: 1.3 연결이 TLS로 보호되는 경우.

OpenTelemetry를 사용할 때 이 메트릭의 기본 버킷은 [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]으로 설정됩니다.

사용 가능 버전: .NET 8.0.

메트릭: kestrel.active_tls_handshakes
이름 계측 유형 단위(UCUM) 설명
kestrel.active_tls_handshakes UpDownCounter {handshake} 현재 서버에서 진행 중인 TLS 핸드셰이크 수입니다.
Attribute Type 설명 예제 현재 상태
network.transport string OSI 전송 계층 또는 프로세스 간 통신 방법. tcp: unix Always
network.transport string OSI 네트워크 계층 또는 비OSI와 동등합니다. ipv4: ipv6 전송 수단이 tcp 또는 udp인 경우.
server.address string 역방향 DNS 조회 없이 사용 가능한 경우 서버 주소 도메인 이름. 그렇지 않으면 IP 주소 또는 Unix 도메인 소켓 이름입니다. example.com Always
server.port int 서버 포트 번호 전송 수단이 tcp 또는 udp인 경우.

사용 가능 버전: .NET 8.0.

Microsoft.AspNetCore.Http.Connections

Microsoft.AspNetCore.Http.Connections 메트릭은 ASP.NET Core SignalR의 연결 정보를 보고합니다.

메트릭: signalr.server.connection.duration
이름 계측 유형 단위(UCUM) 설명
signalr.server.connection.duration 히스토그램 s 서버의 연결 기간입니다.
Attribute Type 설명 예제 현재 상태
signalr.connection.status string SignalR HTTP 연결 종료 상태입니다. app_shutdown: timeout Always
signalr.transport string SignalR 전송 형식 web_sockets: long_polling Always

사용 가능 버전: .NET 8.0.

설명
normal_closure 연결이 정상적으로 종료되었습니다.
timeout 시간 제한으로 인해 연결이 종료되었습니다.
app_shutdown 앱이 종료되어 연결이 종료되었습니다.

signalr.transport는 다음 중 하나일 수 있습니다.

프로토콜
server_sent_events server-sent 이벤트
long_polling 긴 폴링
web_sockets WebSocket

이 메트릭은 연결 기간을 추적하고 이상적으로 SignalR 연결은 내구성이 있으므로 버킷은 요청 기간에 사용된 것보다 길어야 합니다. 예를 들어, [0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300]을 사용하면 5분의 상위 버킷이 제공됩니다.

사용 가능 버전: .NET 8.0.

메트릭: signalr.server.active_connections
이름 계측 유형 단위(UCUM) 설명
signalr.server.active_connections UpDownCounter {connection} 현재 서버에서 활성화된 연결 수입니다.
Attribute Type 설명 예제 현재 상태
signalr.connection.status string SignalR HTTP 연결 종료 상태입니다. app_shutdown: timeout Always
signalr.transport string SignalR 전송 형식 web_sockets: long_polling Always

.NET 8.0부터 사용이 가능합니다.