다음을 통해 공유


.NET의 기본 제공 활동

기본적으로 분산 추적 활동에 대한 참조입니다. NET의 기본 제공 인스턴스입니다.

System.Net 활동

System.Net 추적을 수집하고 보고하는 방법에 대한 포괄적인 가이드는 .NET 네트워킹 분산 추적을 참조하세요.

HTTP 클라이언트 요청

SocketsHttpHandlerHttpClientHandler OpenTelemetry HTTP 클라이언트 의미 체계 규칙정의된 권장 사항에 따라 HTTP 클라이언트 요청 활동을 보고합니다. 기본 처리기가 요청을 완료하는 시간 간격 동안 HttpClient전송 오버로드에서 보낸 HTTP 요청을 설명합니다. 요청을 완료하면 네트워크 스트림에서 응답 헤더를 읽는 데 걸리는 시간이 포함됩니다. 응답 본문을 읽는 데 소요된 시간은 포함되지 않습니다. SocketsHttpHandler 연결 오류 또는 HTTP 버전 다운그레이드와 같은 요청을 다시 시도할 수 있습니다. 재시도는 별도의 HTTP 클라이언트 요청 활동으로 보고되지 않습니다.

가용도 ActivitySource 이름 OperationName DisplayName
.NET 9 이상 System.Net.Http System.Net.Http.HttpRequestOut {HTTP method}

메모

System.Net.Http.HttpRequestOut 활동은 실제로 이전 버전의 .NET에서 사용할 수 있지만 Status, DisplayName및 특성(태그)은 .NET 9부터만 채워집니다. 이전 버전에서는 기본 제공 계측의 간격을 채우기 위해 OpenTelemetry.Instrumentation.Http 패키지를 사용하는 것이 좋습니다.

특성(태그)

속성 묘사 예제 존재
http.request.method string HTTP 요청 메서드입니다. [1] GET; POST; HEAD; _OTHER
server.address string HTTP 요청이 전송되는 "URI 원본"의 호스트 식별자입니다. example.com; 10.1.2.80
server.port int HTTP 요청이 전송되는 "URI 원본"의 포트 식별자입니다. 80; 8080; 443
url.full string RFC3986 따라 네트워크 리소스를 설명하는 절대 URL [2] https://www.foo.bar/search?q=*
error.type string 요청 실패 이유: snake_case HTTP 요청 오류 중 하나 또는 전체 예외 유형 또는 HTTP 4xx/5xx 상태 코드입니다. System.OperationCanceledException; name_resolution_error; secure_connection_error; 404 요청이 실패한 경우
http.request.method_original string 요청 줄에서 클라이언트가 보낸 원래 HTTP 메서드입니다. ACL; foo http.request.method 잘 알려진 메서드가 아닌 경우
http.response.status_code int HTTP 응답 상태 코드. 200 응답을 받은 경우
network.protocol.version string 사용된 HTTP 프로토콜의 버전입니다. 1.1; 2 응답을 받은 경우

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

[2] url.full: 비밀이 누출되지 않도록 하려면 기본적으로 값이 수정됩니다. 전체 쿼리는 * 문자로 대체되고 조각 & 사용자 정보가 제거됩니다. 자세한 내용 및 옵트아웃 스위치는 URI 편집 호환성이 손상되는 변경 문서참조하세요.

HTTP 클라이언트 요청: 연결 대기(실험적)

이 활동은 HTTP 클라이언트 요청 활동의 자식입니다. 해당 요청이 요청 큐에서 사용 가능한 연결을 기다리는 시간 간격을 나타냅니다. 요청이 들어올 때 풀에서 무료 연결을 사용할 수 있는 경우 연결 작업이 생성될 때까지 기다리지 않습니다. 연결 대기해도 실제 연결 설정은 표시되지 않습니다. 는 HTTP 연결 설정 작업으로 모델링됩니다. SocketsHttpHandler 연결 오류 또는 HTTP 버전 다운그레이드와 같은 요청을 다시 시도할 수 있습니다. 재시도는 별도의 HTTP 클라이언트 요청 활동으로 보고되지 않습니다. 그러나 새 연결 시도마다 부모 요청 작업에서 연결 활동을 기다리는 새 발생합니다.

가용도 ActivitySource 이름 OperationName DisplayName
.NET 9 이상 Experimental.System.Net.Http.Connections Experimental.System.Net.Http.Connections.WaitForConnection HTTP wait_for_connection {address}:{port}

풀에서 연결을 가져오는 데 걸리는 시간도 http.client.request.time_in_queue 메트릭에 의해 보고됩니다.

경고

이 활동은 실험적입니다. 이후 버전에서 변경되거나 삭제될 수 있습니다.

특성(태그)

속성 묘사 예제 존재
error.type string 연결 실패 이유: snake_case HTTP 요청 오류 중 하나 또는 전체 예외 유형이. System.OperationCanceledException; name_resolution_error; secure_connection_error 연결 시도가 실패하는 경우

HTTP 연결 설정(실험적)

이 활동은 HTTP 연결의 설정에 대해 설명합니다. 일반적으로 DNS를 확인하고, 소켓 연결을 설정하고, TLS 핸드셰이크를 수행하는 데 걸리는 시간이 포함됩니다.

가용도 ActivitySource 이름 OperationName DisplayName
.NET 9 이상 Experimental.System.Net.Http.Connections Experimental.System.Net.Http.Connections.ConnectionSetup HTTP connection_setup {address}:{port}

HTTP 클라이언트 요청HTTP 연결 설정 활동 사이에는 부모-자식 관계가 없습니다. 후자는 항상 별도의 추적에 살고있는 루트 활동이 될 것입니다. 그러나 HTTP 연결 설정으로 표현된 연결 시도가 성공적인 HTTP 연결이 생성되고 해당 연결을 제공하는 요청에 의해 연결이 선택되는 경우 계측은 ActivityLink 활동을 가리키는 HTTP 클라이언트 요청 활동에 추가합니다. 즉, 각 요청은 요청을 처리한 연결에 연결됩니다.

메모

HTTP 연결 설정 실패하면 HTTP 클라이언트 요청연결되지 않습니다.

경고

이 활동은 실험적입니다. 이후 버전에서 변경되거나 삭제될 수 있습니다.

특성(태그)

속성 묘사 예제 존재
error.type string 연결 실패 이유: snake_case HTTP 요청 오류 중 하나 또는 전체 예외 유형입니다. System.Net.Sockets.SocketException; name_resolution_error; secure_connection_error 연결 시도가 실패하는 경우
network.peer.address string 소켓 연결의 피어 IP 주소입니다. 10.5.3.2 연결 시도가 성공하면 입니다.
server.address string 초기 HTTP 요청이 전송되는 "URI 원본"의 호스트 식별자입니다. example.com
server.port int 초기 HTTP 요청이 전송되는 "URI 원본"의 포트 식별자입니다.
url.scheme string URI 체계는 사용된 프로토콜을 식별하는 구성 요소를. http; https

DNS 조회(실험적)

이 활동은 Dns 호출을 통해 수행되는 DNS 조회에 대해 설명합니다. 기본 OS 확인자에서 수행한 실제 DNS 조회가 아닌 관리되는 호출에 해당합니다. DNS 조회 작업이 HTTP 연결 설정 활동과 함께 보고되면 DNS 조회HTTP 연결 설정자식이 됩니다.

가용도 ActivitySource 이름 OperationName DisplayName
.NET 9 이상 Experimental.System.Net.NameResolution Experimental.System.Net.NameResolution.DnsLookup DNS [reverse] lookup {question}

DNS 조회 기간은 dns.lookup.duration 메트릭에서도 보고됩니다.

경고

이 활동은 실험적입니다. 이후 버전에서 변경되거나 삭제될 수 있습니다.

특성(태그)

속성 묘사 예제 존재
error.type string 오류 코드 또는 예외 이름입니다. [1] host_not_found 조회가 실패하는 경우
dns.answers string[] 확인된 IP 주소 목록(DNS 조회용) 또는 도메인 이름을 포함하는 단일 요소(역방향 조회용)입니다. ["10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"] 조회가 성공하면
dns.question.name string 쿼리할 도메인 이름 또는 IP 주소입니다. example.com

[1]: 값은 snake_case(SocketError, host_not_found, try_again, no_recovery)의 DNS 관련 address_family_not_supported 또는 전체 예외 이름입니다.

소켓 연결(실험적)

이 활동은 Socket 또는 Connect통해 ConnectAsync 연결의 설정에 대해 설명합니다. 소켓 연결 작업이 HTTP 연결 설정 활동과 함께 보고되면 소켓 연결HTTP 연결 설정자식이 됩니다.

가용도 ActivitySource 이름 OperationName DisplayName
.NET 9 이상 Experimental.System.Net.Sockets Experimental.System.Net.Sockets.Connect socket connect {address}[:{port}]

경고

이 활동은 실험적입니다. 이후 버전에서 변경되거나 삭제될 수 있습니다.

특성(태그)

속성 묘사 예제 존재
error.type string snake_case SocketError. address_already_in_use; connection_refused 소켓 연결 시도가 실패하는 경우
network.peer.address string 네트워크 연결의 피어 주소 - IP 주소 또는 Unix 도메인 소켓 이름입니다. 10.5.3.2; /tmp/my.sock IP 및 UDS 소켓.
network.peer.port int IP 연결의 피어 포트 번호입니다. 65123 IP 소켓.
network.transport string OSI 전송 계층 또는 프로세스 간 통신 방법. tcp; udp; unix IP 및 UDS 소켓.
network.type string OSI 네트워크 계층 또는 비 OSI에 해당하는 . ipv4; ipv6 IP 소켓.

TLS 핸드셰이크(실험적)

이 활동은 SslStream인증 방법을 통해 수행되는 TLS 클라이언트 또는 서버 핸드셰이크를 설명합니다. TLS 핸드셰이크 작업이 HTTP 연결 설정 활동과 함께 클라이언트 쪽 인증에 대해 보고되면 TLS 핸드셰이크HTTP 연결 설정자식이 됩니다.

가용도 ActivitySource 이름 OperationName DisplayName
.NET 9 이상 Experimental.System.Net.Security Experimental.System.Net.Security.TlsHandshake TLS client handshake {host} -또는- TLS server handshake

경고

이 활동은 실험적입니다. 이후 버전에서는 변경되거나 삭제될 수 있습니다.

특성(태그)

속성 묘사 예제 존재
error.type string 작업이 종료된 오류 클래스를 설명합니다. System.Net.Security.Authentication.AuthenticationException; System.OperationCanceledException 핸드셰이크가 실패하는 경우
server.address string TLS 핸드셰이크 중에 '클라이언트 Hello' 메시지에 사용되는 SNI(서버 이름 표시). example.com 클라이언트로 인증하는 경우
tls.protocol.name string 협상된 SSL/TLS 프로토콜 버전 원래 문자열에서 구문 분석된 정규화된 소문자 프로토콜 이름 ssl; tls 프로토콜 정보를 사용할 수 있는 경우
tls.protocol.version string 협상된 SSL/TLS 프로토콜 버전의 원래 문자열에서 구문 분석된 버전의 숫자 부분 1.2; 1.3 프로토콜 정보를 사용할 수 있는 경우