콘텐츠로 이동

Windows 애플리케이션 데이터 수집

Windows 문서는 RUM, Log, HTTP Trace 세 가지 데이터 유형을 모두 다룹니다. .NET / C#, Native C/C++, WebView2 및 Electron 기본 Bridge는 동일한 Windows SDK 제품 아이덴티티를 사용합니다. Electron Renderer의 Browser RUM은 수집 및 직렬화만 담당하며, 신뢰 필드와 Session은 Main Process 어댑터 계층 및 Windows Native Core가 통합 관리하고, 큐와 업로드는 Native Core가 처리합니다.

데이터 유형

데이터 도메인 역할 전송 동작
RUM Session, View, Action, Resource, Error 및 Long Task 기록 RUM 큐에 기록 후 RUM Intake로 전송
Log 애플리케이션 로그 기록 및 현재 RUM 컨텍스트 연결 가능 별도 Log 큐에 기록 후 Logging Intake로 전송
HTTP Trace 아웃바운드 요청에 Trace Header 삽입 및 해당 RUM Resource 연결 가능 APM Span을 별도로 전송하지 않음

전역 속성

필드 유형 설명
app_id string 콘솔에서 생성한 애플리케이션 ID입니다.
service string .NETGuanceConfig.ServiceName, Native의 guance_sdk_config.service_name 또는 Electron 기본 구성입니다.
env string prod, gray, pre, common 또는 local입니다.
version string 애플리케이션 버전입니다.
sdk_name string Windows .NET, Native Core, WebView2 및 Electron 기본 Bridge는 df_windows_rum_sdk로 고정됩니다.
sdk_version string 현재 Windows SDK 어셈블리 또는 Native Core의 버전입니다. Electron Adapter는 애플리케이션과 함께 전달되는 Native SDK 버전을 반드시 전달해야 하며, 비즈니스 애플리케이션 버전으로 대체할 수 없습니다.
application_uuid string 현재 애플리케이션 설치 인스턴스 식별자입니다.
session_id string 현재 사용자 Session 식별자입니다.
session_type string Windows SDK는 user로 고정됩니다.
session_has_replay boolean 현재 Session에서 업로드 가능한 Replay 데이터가 이미 생성되었는지 여부입니다.
session_sample_rate number 현재 일반 Session 샘플링 비율입니다.
session_on_error_sample_rate number Error Session 추가 샘플링 비율입니다.
view_id string 현재 활성 View 식별자입니다.
action_id string 현재 활성 Action 식별자이며, 존재하는 경우 기록됩니다.
userid string RUM 애플리케이션 ID별로 영구 저장된 익명 사용자 식별자 또는 사용자 API를 통해 설정된 사용자 ID입니다.
user_name, user_email string 사용자 API 호출 후 기록됩니다.
is_signin string 사용자가 설정된 경우 T, 그렇지 않은 경우 F입니다.
os, os_version string Windows 이름 및 버전입니다.
os_version_major string Windows 주 버전입니다.
device, model string Windows 장치 및 모델 정보이며, 획득 가능한 경우 기록됩니다.
arch string 프로세스가 실행 중인 장치 아키텍처입니다.
screen_size string 획득 가능한 경우 주 모니터 크기를 기록합니다.
locale string 현재 로캘 설정입니다.
network_type string wifi, ethernet, mobile, none 또는 unknown입니다.

사용자 정의 컨텍스트는 존재하지 않는 필드만 추가하며, SDK 예약 필드를 덮어쓸 수 없습니다.

기타 데이터 유형 속성

Session은 콘솔에서 동일한 session_id 아래의 이벤트를 집계하여 생성한 사용자 액세스 과정이며, 별도로 Session API를 호출할 필요가 없습니다.

유형 설명 일반적인 출처
View 창 또는 비즈니스 페이지의 표시 가능 기간 및 성능 Window/Form 수명 주기, WinUI 3 명시적 연결, Native 창 이벤트, WebView2 탐색
Action 사용자 작업 및 소요 시간 클릭, 메뉴, 선택, 전환, 입력, 단축키 또는 수동 Action
Resource 네트워크 요청, 상태 및 소요 시간 HttpClient, WinHTTP, WebView2 Fetch/XHR/Resource 또는 수동 Resource
Error 애플리케이션 및 페이지 오류 처리되지 않은 .NET 예외, Native 충돌 복구, WebView2 JavaScript Error 또는 수동 Error
Long Task UI 메인 스레드 장시간 차단 Windows UI 스레드 탐지 또는 수동 Long Task

View

필드 유형 설명
view_id string View의 고유 식별자입니다.
view_name string 창, 페이지 또는 비즈니스 View 이름입니다.
view_referrer string 이전 View 이름입니다.
time_spent integer View 지속 시간(나노초)입니다.
is_active boolean 전송 시 View가 여전히 활성 상태인지 여부입니다.
view_action_count integer View에서 생성된 Action 수입니다.
view_resource_count integer View에서 생성된 Resource 수입니다.
view_error_count integer View에서 생성된 Error 수입니다.
view_long_task_count integer View에서 생성된 Long Task 수입니다.
view_update_time integer 이번 View 업데이트의 Unix 나노초 타임스탬프입니다.

Action

필드 유형 설명
action_id string Action의 고유 식별자입니다.
action_name string 컨트롤, 명령 또는 비즈니스 동작 이름입니다.
action_type string 예: click, key, launch_cold 또는 launch_hot입니다.
duration integer Action 지속 시간(나노초)입니다.
action_resource_count integer Action 범위 내의 Resource 수입니다.
action_error_count integer Action 범위 내의 Error 수입니다.
action_long_task_count integer Action 범위 내의 Long Task 수입니다.
app_pre_application_init_time integer 시작 Action에서 애플리케이션 코드 실행 전 소요 시간입니다.
app_application_init_time integer 시작 Action에서 애플리케이션 초기화 단계의 소요 시간입니다.
app_first_frame_init_time integer 시작 Action에서 첫 프레임 단계의 소요 시간입니다.

Resource

필드 유형 설명
resource_id string Resource의 고유 식별자입니다.
resource_url string 개인정보 보호 정책이 적용된 요청 URL입니다.
resource_url_host string 요청 호스트 이름입니다.
resource_url_path string 요청 경로입니다.
resource_url_path_group string 정규화된 경로 그룹입니다.
resource_method string HTTP 메서드입니다.
resource_status integer HTTP 상태 코드이며, 응답을 받지 못한 경우 유효한 상태가 기록되지 않습니다.
resource_status_group string 상태 코드 그룹(예: 2xx)입니다.
resource_type string http, native 또는 애플리케이션에서 전달한 리소스 유형입니다.
duration integer Resource 총 소요 시간(나노초)입니다.
resource_size integer 응답 본문 바이트 수이며, 획득 가능한 경우 기록됩니다.
resource_request_size integer 요청 본문 바이트 수이며, 획득 가능한 경우 기록됩니다.
resource_dns, resource_tcp, resource_ssl, resource_ttfb integer 안정적으로 획득 가능한 경우 기록되는 네트워크 단계 소요 시간(나노초)입니다.
resource_http_protocol string HTTP 프로토콜 버전입니다.
trace_id, span_id string Trace와 RUM 연결이 활성화된 경우 기록됩니다.
request_header, response_header string 개인정보 보호 구성이 허용하는 경우에만 기록되는 Header 스냅샷입니다.
network_instrumentation, network_library string 자동 수집 진입점 및 식별된 네트워크 라이브러리입니다.

단계별 소요 시간은 resource_timing_source, resource_timing_precision, resource_timing_duration, resource_timing_phaseresource_ttfb_estimated를 통해 출처와 정밀도가 표시됩니다. 신뢰할 수 있는 단계 데이터가 없는 경우 SDK는 총 소요 시간만 기록합니다.

Error

필드 유형 설명
error_type string 자동 수집은 아래 표의 표준 유형을 사용하며, 수동 Error는 애플리케이션에서 전달한 유형을 사용합니다.
error_source string Crash 및 애플리케이션 예외는 logger, 네트워크 오류는 network, WebView2 페이지 오류는 webview입니다.
error_situation string run은 실행 중을 의미하며, 다음 시작 시 복구되는 Native Crash는 startup입니다.
error_message string 오류 요약이며, Crash는 예외 유형, 예외 코드 또는 주소 등의 진단 정보를 포함합니다.
error_stack string 전체 예외 또는 호출 스택이며, 전체 Native 호출 스택을 얻을 수 없는 경우 최소한 명령어 주소를 기록합니다.

자동 수집 유형

시나리오 error_type error_source 설명
처리되지 않은 .NET 예외로 인한 프로세스 종료 windows_crash logger error_message는 전체 예외 유형 및 메시지를 포함하고, error_stackException.ToString()을 포함합니다.
처리되지 않은 SEH 또는 C++ std::terminate native_crash logger 충돌 정보가 안전하게 디스크에 저장되고 다음 시작 시 복구되며, 예외 코드, 주소 또는 std::terminate 정보가 error_message에 기록됩니다.
Native UI Watchdog이 애플리케이션 응답 없음을 감지 anr_error logger 애플리케이션이 응답을 복구한 후 전송되며, 지속 시간이 error_message에 기록됩니다.
HttpClient 요청 예외 또는 자동 Resource가 HTTP 4xx/5xx 반환 network_error network Error가 해당 Resource에 연결되며, URL, 메서드 및 상태 정보를 함께 전달합니다.
WebView2 JavaScript Error JavaScript Error.name, 없는 경우 JavaScriptError webview error_messageerror_stack는 페이지 예외에서 가져옵니다.
WebView2 처리되지 않은 Promise rejection rejection의 name, 없는 경우 UnhandledPromiseRejection webview error_messageerror_stack는 rejection reason에서 가져옵니다.
WebView2 탐색 실패 WebView2NavigationError webview error_message는 탐색 실패 상태를 포함합니다.
WebView2 프로세스 실패 WebView2ProcessFailed webview error_message는 프로세스 실패 유형 또는 원인을 포함합니다.

관찰되지 않은 Task 예외 및 WinForms에서 포착한 후 애플리케이션이 계속 실행되도록 허용하는 UI 스레드 예외는 Crash가 아니며, error_type은 해당 .NET 예외 유형을 사용하고 error_sourcelogger입니다. 예외 분류 및 진단 세부 정보는 error_type, error_messageerror_stack에 통합되어 표시됩니다.

Long Task

필드 유형 설명
duration integer Long Task 지속 시간(나노초)입니다.
long_task_stack string 획득 가능한 경우 기록되는 호출 스택입니다.
long_task_source string 자동 또는 수동 수집 출처입니다.
long_task_delay integer UI 스레드에서 탐지된 차단 지연 시간입니다.
long_task_threshold integer 적용되는 Long Task 임계값입니다.
long_task_cooldown integer 연속 차단 보고의 쿨다운 시간입니다.
long_task_suppressed_count integer 쿨다운 기간 동안 병합된 중복 보고 수입니다.

RUM 기능 매트릭스

연동 방식 View Action Resource Error Long Task
WPF 자동 자동 HttpClient 처리되지 않은 예외 UI 스레드 모니터링
WinForms 자동 자동 HttpClient 처리되지 않은 예외 UI 스레드 모니터링
WinUI 3 창 연결 후 자동 자동 HttpClient 처리되지 않은 예외 UI 스레드 모니터링
Native C/C++ 창 이벤트 명시적 연동 메시지 또는 명령 명시적 연동 WinHTTP 어댑터 또는 수동 API 충돌 복구 또는 수동 API HWND Watchdog 또는 수동 API
WebView2 페이지 탐색 페이지 상호작용 Fetch/XHR/Resource JavaScript Error Renderer Long Task 미수집
Electron Native Bridge Browser RUM Browser RUM Browser RUM Browser RUM + Main Process 이벤트 Browser RUM; Renderer 응답 없음은 Main Process가 전송

Native SDK는 프로세스 수준 Detour Hook을 설치하지 않습니다. 애플리케이션은 HWND, WinHTTP Handle 또는 비즈니스 수명 주기 이벤트를 명시적으로 전달해야 하며, 연동 방식은 데스크톱 UI 프레임워크RUM 수동 계측을 참조하세요.

Log 기능 매트릭스

연동 방식 사용자 정의 Log 일괄 Log 자동 로그 출처 RUM 연결
.NET / C# GuanceSdk.AddLog() GuanceSdk.AddLogs() System.Diagnostics.Trace 수집 가능 구성 가능
Native C/C++ guance_log_add() guance_log_add_batch() 현재 Console, ETW 또는 타사 로그 라이브러리 차단 안 함 구성 가능
WebView2 Windows 호스트가 기록 Windows 호스트가 기록 페이지 Console 자동 브리징 안 함 호스트의 현재 RUM 컨텍스트 사용
Electron Native Bridge Browser Logs API Browser Logs Adapter가 변환 Console, 페이지 오류 또는 사용자 정의 범위는 Browser Logs 구성에 따름 Native Session, View 및 Action 컨텍스트 사용

Log는 독립적인 큐를 사용합니다. RUM 연결이 활성화된 경우, 로그 기록 시점의 session_id, view_idaction_id가 Log와 함께 전송됩니다. 이미 큐에 추가된 Log는 이후 컨텍스트 변경에 따라 수정되지 않습니다.

Log의 핵심 필드는 messagestatus입니다. 또한 service, env, version, SDK, 애플리케이션, 장치 및 사용자 필드가 함께 전달됩니다. RUM 연결이 활성화된 경우 session_id, view_id, action_id 및 해당 이름도 함께 전달됩니다. GlobalContext, 사용자 확장 속성 및 이벤트 수준 Properties는 사용자 정의 태그로 기록되지만, SDK 예약 필드를 덮어쓸 수 없습니다.

Trace 기능 매트릭스

연동 방식 자동 경계 수동 컨텍스트 RUM Resource 연결 독립 Span 전송
.NET / C# HttpClient 진단 구독 또는 RumHttpMessageHandler ContextProvider 구성 가능 지원 안 함
Native C/C++ guance_rum_winhttp.hpp guance_trace_create_context() 또는 콜백 구성 가능 지원 안 함
WebView2 페이지 요청은 WebView2/Browser 측에서 처리 페이지 SDK가 관리 페이지 Resource 브리징 Windows SDK가 업로드하지 않음
Electron Native Bridge Browser RUM SDK Browser RUM SDK Resource가 Bridge를 통해 Native RUM 큐에 기록 지원 안 함

HTTP Trace는 요청 Header를 생성 또는 전달하며, trace_id, span_id를 해당 RUM Resource에 기록할 수 있습니다. 전체 APM Span이 필요한 경우 애플리케이션에서 별도의 APM Tracer를 사용해야 합니다. 구체적인 형식 및 대상 필터링 방식은 Trace 구성을 참조하세요.

데이터 연결

  • 다섯 가지 RUM 데이터 유형은 현재 session_id를 공유합니다.
  • Action, Resource, Error 및 Long Task는 현재 view_id에 연결됩니다.
  • Action 범위 내에서 생성된 Resource, Error 및 Long Task는 해당 action_id에 연결됩니다.
  • 새 View가 시작되면 이전 활성 View가 종료됩니다.
  • 사용자 정보 업데이트는 이후 데이터에만 영향을 미치며, 기존 데이터는 수정되지 않습니다.
  • Log 및 HTTP Trace가 RUM에 연결되는지 여부는 각각의 EnableLinkRumData 또는 enable_link_rum_data에 의해 제어됩니다.

Resource 소요 시간

자동 HttpClient Resource는 기본적으로 총 소요 시간을 기록하고 소요 시간 정밀도를 표시합니다. HttpResourceTimingProvider 또는 RumResourceTiming.FromPhases()를 통해 DNS, TCP, TLS 및 TTFB 단계를 추가할 수 있습니다.

Native WinHTTP 어댑터는 요청 시작, 종료, 상태, 바이트 수 및 Trace 연결 정보를 기록합니다. 애플리케이션에 신뢰할 수 있는 단계별 소요 시간이 없는 경우, 이러한 필드를 추정하거나 위조해서는 안 됩니다.

데이터 개인정보 보호

Resource URL 쿼리 매개변수, HTTP Header, Trace 대상 및 Log 속성의 처리 방식은 개인정보 보호 및 권한 설명을 참조하세요. 사용자, 사용자 정의 컨텍스트 및 수동 이벤트 속성은 애플리케이션이 기록하기 전에 비즈니스 수준에서 마스킹을 완료해야 합니다.

문서 평가

이 페이지가 도움이 되었나요?