다음을 통해 공유


System.Net 메트릭

이 문서에서는 System.Net API를 사용하여 생성된 System.Diagnostics.Metrics 기본 제공되는 네트워킹 메트릭에 대해 설명합니다. 대체 EventCounters API를 기반으로 하는 메트릭 목록은 .NET잘 알려진 EventCounters 참조하세요.

System.Net 메트릭을 수집, 보고, 보강 및 테스트하는 방법에 대한 자세한 내용은 .NET네트워킹 메트릭을 참조하세요.

System.Net.NameResolution

System.Net.NameResolution 메트릭은 DnsDNS 이름 확인을 보고합니다.

메트릭: dns.lookup.duration
이름 계측 유형 단위 묘사
dns.lookup.duration 히스토그램 s DNS 조회를 수행하는 데 걸린 시간을 측정합니다.
속성 묘사 예제 존재
dns.question.name 문자열 쿼리할 이름입니다. www.example.com; dot.net
error.type 문자열 잘 알려진 오류 문자열 또는 발생한 예외의 전체 형식 이름입니다. host_not_found; System.Net.Sockets.SocketException 오류가 발생한 경우

이 메트릭은 DNS 요청을 수행하는 데 걸리는 시간을 측정합니다. 이러한 요청은 Dns 메서드를 호출하거나 HttpClient같은 형식의 상위 수준 API 내에서 간접적으로 발생할 수 있습니다.

DNS 조회를 수행할 때 대부분의 오류는 SocketExceptionthrow합니다. 일반적인 오류 사례를 보다 명확하게 구분하기 위해 특정 SocketErrorCode 소켓 예외에는 error.type명시적 오류 이름이 지정됩니다.

SocketErrorCode error.type
HostNotFound host_not_found
TryAgain try_again
AddressFamilyNotSupported address_family_not_supported
NoRecovery no_recovery

다른 SocketError 값의 소켓 예외는 System.Net.Sockets.SocketException보고됩니다.

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부터 사용 가능

System.Net.Http

System.Net.Http 메트릭은 System.Net.HttpHTTP 요청 및 연결 정보를 보고합니다.

메트릭: http.client.open_connections
이름 계측 유형 단위(UCUM) 묘사
http.client.open_connections UpDownCounter {connection} 클라이언트에서 현재 활성화되거나 유휴 상태인 아웃바운드 HTTP 연결 수
속성 묘사 예제 존재
http.connection.state 문자열 HTTP 연결 풀의 HTTP 연결 상태입니다. active; idle
network.protocol.version 문자열 사용된 HTTP 프로토콜의 버전입니다. 1.1; 2
server.address 문자열 HTTP 요청이 전송되는 "URI 원본"의 호스트 식별자입니다. example.com
server.port int HTTP 요청이 전송되는 "URI 원본"의 포트 식별자입니다. 80; 8080; 443 기본값이 아닌 경우(80 체계의 경우http, 443https)
network.peer.address 문자열 소켓 연결의 피어 IP 주소입니다. 10.5.3.2
url.scheme 문자열 URI 체계는 사용된 프로토콜을 식별하는 구성 요소를. http; https; ftp

HttpClient기본 SocketsHttpHandler사용하도록 구성된 경우 HTTP 메시지를 보내기 위해 캐시된 네트워크 연결 풀을 유지 관리합니다. 이 메트릭은 현재 풀에 있는 연결 수를 계산합니다. 활성 연결이 활성 요청을 처리하고 있습니다. 활성 연결은 데이터를 전송하거나 클라이언트 또는 서버를 대기할 수 있습니다. 유휴 연결은 요청을 처리하지 않지만 향후 요청을 더 빠르게 처리할 수 있도록 열려 있습니다.

.NET 8부터 사용 가능

메트릭: http.client.connection.duration
이름 계측 유형 단위(UCUM) 묘사
http.client.connection.duration 히스토그램 s 아웃바운드 HTTP 연결이 성공적으로 설정된 기간입니다.
속성 묘사 예제 존재
network.protocol.version 문자열 사용된 HTTP 프로토콜의 버전입니다. 1.1; 2
server.address 문자열 HTTP 요청이 전송되는 "URI 원본"의 호스트 식별자입니다. example.com
server.port int HTTP 요청이 전송되는 "URI 원본"의 포트 식별자입니다. 80; 8080; 443 기본값이 아닌 경우(80 체계의 경우http, 443https)
network.peer.address 문자열 소켓 연결의 IP 주소입니다. 10.5.3.2
url.scheme 문자열 URI 체계는 사용된 프로토콜을 식별하는 구성 요소를. http; https; ftp

이 메트릭은 기본 HttpClient사용하도록 SocketsHttpHandler 구성된 경우에만 캡처됩니다.

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

.NET 8부터 사용 가능

메트릭: http.client.request.duration
이름 계측 유형 단위(UCUM) 묘사
http.client.request.duration 히스토그램 s 아웃바운드 HTTP 요청의 기간입니다.
속성 묘사 예제 존재
error.type 문자열 요청 실패 이유: snake_case HTTP 요청 오류 중 하나 또는 전체 예외 유형 또는 HTTP 4xx/5xx 상태 코드입니다. System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error; 404 요청이 실패한 경우
http.request.method 문자열 HTTP 요청 메서드입니다. GET; POST; HEAD; _OTHER [2]
http.response.status_code int HTTP 응답 상태 코드. 200 응답을 받은 경우
network.protocol.version 문자열 사용된 HTTP 프로토콜의 버전입니다. 1.1; 2 응답을 받은 경우
server.address 문자열 HTTP 요청이 전송되는 "URI 원본"의 호스트 식별자입니다. example.com
server.port int HTTP 요청이 전송되는 "URI 원본"의 포트 식별자입니다. 80; 8080; 443 .NET 버전에 따라 다릅니다. [3]
url.scheme 문자열 URI 체계는 사용된 프로토콜을 식별하는 구성 요소를. http; https; ftp

[1] error.type: 요청이 실패하면 값이 다음 중 하나로 설정됩니다.

  • 형식이 있는 예외 이름(예: TaskCanceledException)입니다.
  • 클라이언트 또는 서버 오류(예: 500)를 나타내는 상태 코드입니다.
  • HttpRequestException이외의 HttpRequestErrorUnknown 발생한 경우 뱀 대/소문자의 열거형 값은 name_resolution_error.

[2] http.request.method:http.request.method:** 메서드가 RFC9110;에 나열된 잘 알려진 메서드 중 하나인 경우 값에 메서드 이름이 포함됩니다. 그렇지 않으면 값이 _OTHER. 사용자가 제공한 메서드 이름은 대/소문자를 구분하지 않는 방식으로 알려진 이름에 매핑됩니다. 예를 들어 사용자가 GeT이름을 제공하는 경우 GET매핑됩니다.

[3] server.port: 값의 존재는 버전에 따라 다릅니다.

  • .NET 8: 기본값이 아닌 경우 표시(80 체계의 경우http, 443https)
  • .NET 9+: 항상 있음

HTTP 클라이언트 요청 기간은 기본 클라이언트 처리기가 요청을 완료하는 데 걸리는 시간을 측정합니다. 요청을 완료하면 네트워크 스트림에서 응답 헤더를 읽는 데 걸리는 시간이 포함됩니다. 응답 본문을 읽는 데 소요된 시간은 포함되지 않습니다.

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부터 사용 가능

보강 이 메트릭에 사용할 수 있습니다.

메트릭: http.client.request.time_in_queue
이름 계측 유형 단위(UCUM) 묘사
http.client.request.time_in_queue 히스토그램 s 사용 가능한 연결을 기다리는 큐에 소요된 요청의 양입니다.
속성 묘사 예제 존재
http.request.method 문자열 HTTP 요청 메서드입니다. GET; POST; HEAD
network.protocol.version 문자열 사용된 HTTP 프로토콜의 버전입니다. 1.1; 2
server.address 문자열 HTTP 요청이 전송되는 "URI 원본"의 호스트 식별자입니다. example.com
server.port int HTTP 요청이 전송되는 "URI 원본"의 포트 식별자입니다. 80; 8080; 443 기본값이 아닌 경우(80 체계의 경우http, 443https)
url.scheme 문자열 URI 체계는 사용된 프로토콜을 식별하는 구성 요소를. http; https; ftp

HttpClient기본 SocketsHttpHandler사용하도록 구성된 경우 네트워크 연결 풀을 사용하여 HTTP 요청을 보냅니다. 모든 연결이 다른 요청을 처리하는 데 사용 중인 경우 새 요청이 큐에 배치되고 네트워크 연결을 사용할 수 있게 될 때까지 기다립니다. 이 계측기는 HTTP 요청이 네트워크를 통해 전송되기 전에 해당 큐에서 대기하는 데 소요되는 시간을 측정합니다.

.NET 8부터 사용 가능

메트릭: http.client.active_requests
이름 계측 유형 단위(UCUM) 묘사
http.client.active_requests UpDownCounter {request} 활성 HTTP 요청 수입니다.
속성 묘사 예제 존재
http.request.method 문자열 HTTP 요청 메서드입니다. GET; POST; HEAD
server.address 문자열 HTTP 요청이 전송되는 "URI 원본"의 호스트 식별자입니다. example.com
server.port int HTTP 요청이 전송되는 "URI 원본"의 포트 식별자입니다. 80; 8080; 443 기본값이 아닌 경우(80 체계의 경우http, 443https)
url.scheme 문자열 URI 체계는 사용된 프로토콜을 식별하는 구성 요소를. http; https; ftp

이 메트릭은 활성으로 간주되는 요청 수를 계산합니다. 요청은 http.client.request.duration 계측으로 측정되는 동일한 기간 동안 활성화됩니다.

.NET 8부터 사용 가능