콘텐츠로 이동

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

Windows 문서는 RUM, Log 및 HTTP Trace의 세 가지 데이터 기능을 모두 다룹니다. .NET / C#, Native C/C++, WebView2 및 Electron 네이티브 Bridge는 동일한 Windows SDK 제품 ID를 사용합니다. 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 .NET의 GuanceConfig.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_phase 및 resource_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_stack에 Exception.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_message 및 error_stack은 페이지 예외에서 가져옴.
처리되지 않은 WebView2 Promise rejection rejection의 name, 없는 경우 UnhandledPromiseRejection webview error_message 및 error_stack은 rejection reason에서 가져옴.
WebView2 탐색 실패 WebView2NavigationError webview error_message에 탐색 실패 상태가 포함됨.
WebView2 프로세스 실패 WebView2ProcessFailed webview error_message에 프로세스 실패 유형 또는 원인이 포함됨.

관찰되지 않은 Task 예외와 WinForms가 포착한 후 애플리케이션 실행을 계속 허용하는 UI 스레드 예외는 Crash가 아닙니다. error_type은 해당 .NET 예외 유형을 사용하고 error_source는 logger입니다. 예외 분류와 진단 세부 정보는 error_type, error_message, error_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_id, action_id가 Log와 함께 업로드됩니다. 이미 큐에 들어간 Log는 이후 컨텍스트 변경으로 수정되지 않습니다.

Log의 핵심 필드는 message와 status입니다. 동시에 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 속성의 처리 방식은 개인정보 보호 및 권한 설명을 참조하세요. 사용자, 사용자 정의 컨텍스트 및 수동 이벤트 속성은 애플리케이션에서 기록 전에 비즈니스 마스킹을 완료해야 합니다.

문서 평가

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