iOS/tvOS/macOS 애플리케이션 데이터 수집
애플리케이션 데이터를 Guance에 수집한 후, Guance 콘솔에서 사용자 정의 시나리오 구성 및 이상 감지 이벤트를 구성할 수 있습니다.
데이터 유형
Guance의 RUM에는 6가지 데이터 유형이 포함됩니다.
iOS SDK가 직접上报하는 RUM 데이터 유형은 view, resource, error, long_task, action입니다. session은 세션 차원의 데이터로, SDK가上报하는 RUM 데이터를 기반으로 집계되어 생성됩니다.
| 유형 |
설명 |
| session |
사용자 세션 정보 기록입니다. 현재 세션에서는 세션 차원의 사용자 페이지, 리소스, 작업, 오류, 긴 작업 관련 방문 데이터를 기반으로 합니다. |
| view |
사용자가 모바일 애플리케이션의 페이지에 방문할 때마다 조회 기록이 생성됩니다. 사용자가 동일한 페이지에 머무르는 동안 리소스, 긴 작업, 오류 및 작업 기록은 view_id 속성을 통해 관련 RUM 뷰에 연결됩니다. |
| resource |
사용자가 페이지에 방문할 때 로드된 리소스 정보 기록입니다. |
| error |
모바일 애플리케이션에서 발생한 예외 또는 크래시입니다. |
| long_task |
지정된 지속 시간 임계값을 초과하여 메인 스레드를 차단하는 애플리케이션의 모든 작업에 대해 긴 작업 이벤트가 생성됩니다. |
| action |
모바일 애플리케이션에서의 사용자 활동(애플리케이션 시작, 클릭, 스와이프, 뒤로 가기 등)을 기록합니다. 각 작업에는 고유한 action_id가 연결됩니다. |
전역 속성
RUM의 시나리오 구성 및 이벤트 알림은 아래의 전역 속성을 통해 조회할 수 있습니다.
SDK 속성
| 필드 |
유형 |
설명 |
sdk_name |
string |
수집기 이름, 고정 이름:
df_macos_rum_sdk
df_ios_rum_sdk
df_tvos_rum_sdk
df_android_rum_sdk |
sdk_version |
string |
수집기 버전 정보 |
sdk_pkg_info |
object |
SDK 패키지 정보 |
애플리케이션 속성
| 필드 |
유형 |
설명 |
app_id |
string |
필수, RUM 애플리케이션 고유 ID 식별자로, Guance 콘솔에서 모니터링 생성 시 자동 생성됩니다. |
application_uuid |
string |
애플리케이션 UUID로, iOS SDK가 메인 Mach-O UUID에서 가져옵니다. |
env |
string |
필수, 환경 필드. 속성값: prod/gray/pre/common/local. 의미: prod: 프로덕션 환경 gray: 카나리 환경 pre: 사전 릴리스 환경 common: 일상 환경 local: 로컬 환경 |
version |
string |
필수, 버전 번호. |
service |
string |
선택 사항, 소속 비즈니스 또는 서비스의 이름. 고정 이름:
df_rum_ios
df_rum_tvos
df_rum_android
df_rum_windows
df_rum_linux |
사용자 및 세션 속성
| 필드 |
유형 |
설명 |
userid |
string |
로그인하지 않은 사용자는 무작위 uuid를 userid로 사용하고, 로그인한 사용자는 애플리케이션 백엔드에서 생성된 사용자 id를 사용합니다. |
user_name |
string |
선택 사항, 사용자 이름. |
user_email |
string |
선택 사항, 사용자 이메일. |
session_id |
string |
세션 id로, 15분 이상 작업이 없으면 새 session_id가 생성됩니다. |
session_type |
string |
세션 유형. 참조값: user & synthetics user: RUM 기능으로 생성된 데이터 synthetics: headless 신서틱 테스트로 생성된 데이터 |
is_signin |
boolean |
등록된 사용자 여부, 속성값: T & F. |
session_has_replay |
boolean |
현재 세션이 Session Replay 데이터와 연결되어 있는지 여부. Session Replay 관련 기능을 활성화하면 View, Resource, Error, Long Task, Action이 이 필드를 기록할 수 있습니다. |
custom_keys |
string |
RUM 사용자 정의 속성 key 목록 |
장치 및 해상도 속성
| 필드 |
유형 |
설명 |
device |
string |
모바일 장치 제조사 |
model |
string |
모바일 장치 모델 |
device_uuid |
string |
모바일 장치 고유 ID, UIDevice.identifierForVendor를 사용하여 생성 |
os |
string |
운영 체제 정보 |
os_version |
string |
운영 체제 버전 |
os_version_major |
string |
운영 체제 주요 버전 |
screen_size |
string |
화면 해상도 |
arch |
string |
CPU 아키텍처, 예: arm64, arm64e, x86_64 |
지리 및 네트워크 속성
| 필드 |
유형 |
설명 |
ip |
string |
사용자 방문 IP 주소 |
isp |
string |
통신사 |
network_type |
string |
네트워크 연결 유형, 속성값 참조: wifi & 2g & 3g & 4g & 5g & unknown(알 수 없는 네트워크) & unreachable(네트워크 연결 불가) |
country |
string |
국가 |
country_iso_code |
string |
국가 ISO 코드 |
province |
string |
주/도 |
city |
string |
도시 |
사용자 정의 속성
전역 속성 외에도 사용자 정의 속성(SDK는 사용자 정의 태그 데이터를 지원합니다)을 통해 시나리오를 구성하고 이벤트 알림을 설정할 수 있습니다. 사용자 정의 속성은 전역 속성이 아닙니다. 사용자 정의 속성을 통해 사용자가 애플리케이션에 방문하는 전체 과정을 추적하고, 사용자가 영향을 받는 방문 상황을 찾아내고 식별하며, 사용자 방문 성능을 모니터링할 수 있습니다.
기타 데이터 유형 속성
Session
Session은 세션 차원의 데이터로, 일반적으로 서버 측에서 SDK가上报하는 RUM 데이터를 기반으로 생성 또는 집계되며, iOS SDK가 직접上报하는 별도의 measurement가 아닙니다.
속성
| 필드 |
유형 |
설명 |
session_id |
string |
세션 id |
session_type |
string |
세션 유형. 참조값: user & synthetics user: RUM 기능으로 생성된 데이터 synthetics: headless 신서틱 테스트로 생성된 데이터 |
session_referrer |
string |
세션 출처. 일반적으로 출처 페이지의 주소를 기록합니다. |
session_first_view_id |
string |
현재 세션의 첫 번째 페이지의 view_id |
session_first_view_name |
string |
현재 세션의 첫 번째 페이지의 URL |
session_last_view_id |
string |
현재 세션의 마지막 방문 페이지의 view_id |
session_last_view_name |
string |
현재 세션의 마지막 페이지의 URL |
통계 지표
| 필드 |
유형 |
설명 |
time_spent |
number(ns) |
현재 세션 지속 시간 |
session_view_count |
number |
현재 세션과 연결된 view_id 개수 |
session_error_count |
number |
현재 세션에서 발생한 오류 개수 |
session_resource_count |
number |
현재 세션에서 로드된 리소스 개수 |
session_action_count |
number |
현재 세션에서 사용자 작업 횟수 |
session_long_task_count |
number |
현재 세션에서 발생한 긴 작업 횟수 |
View
속성
| 필드 |
유형 |
설명 |
view_id |
string |
페이지 방문 시 생성되는 고유 ID |
view_referrer |
string |
페이지 출처, 페이지의 상위 |
view_name |
string |
페이지 이름 |
session_has_replay |
boolean |
현재 View가 속한 세션이 Session Replay 데이터와 연결되어 있는지 여부 |
지표
| 필드 |
유형 |
설명 |
loading_time |
number(ns) |
페이지 로딩 시간 |
time_spent |
number(ns) |
페이지 체류 시간 |
is_active |
boolean |
사용자가 활성 상태인지 여부를 판단, 참조값: true & false |
session_sample_rate |
number |
RUM Session 샘플링 비율 |
session_on_error_sample_rate |
number |
RUM Session 샘플링에 포함되지 않았을 때 오류 발생 후 보충 샘플링 비율 |
session_replay_sample_rate |
number |
Session Replay 샘플링 비율, Session Replay 관련 기능 활성화 시 나타남 |
session_replay_on_error_sample_rate |
number |
오류 발생 후 Session Replay 보충 샘플링 비율, Session Replay 관련 기능 활성화 시 나타남 |
sampled_for_error_session |
boolean |
현재 Session이 오류 샘플링 정책에 의해 샘플링되었는지 여부 |
sampled_for_error_replay |
boolean |
현재 Session Replay가 오류 샘플링 정책에 의해 샘플링되었는지 여부 |
session_error_timestamp |
number(ns) |
오류 샘플링이 적중된 오류 발생 시간 |
session_replay_stats |
object |
현재 View와 연결된 Session Replay 통계 정보 |
통계 지표
| 필드 |
유형 |
설명 |
view_error_count |
number |
페이지 로드 시 발생한 오류 횟수 |
view_resource_count |
number |
페이지 로드 시 요청된 리소스 개수 |
view_long_task_count |
number |
페이지 로드 시 발생한 긴 작업 개수 |
view_action_count |
number |
페이지 조회 중 작업 횟수 |
view_update_time |
number |
View 업데이트 횟수 |
view_long_task_rate |
number |
View 기간 동안 긴 작업 소요 시간 비율 |
모니터링 지표
| 필드 |
유형 |
설명 |
cpu_tick_count |
number |
선택 사항, 해당 페이지 CPU 틱 횟수 |
cpu_tick_count_per_second |
number |
선택 사항, 초당 평균 CPU 틱 횟수 |
fps_avg |
number |
선택 사항, 페이지 평균 초당 프레임 수 |
fps_mini |
number |
선택 사항, 페이지 최소 초당 프레임 수 |
memory_avg |
number |
선택 사항, 페이지 메모리 사용 평균값 |
memory_max |
number |
선택 사항, 페이지 메모리 최대값 |
Resource
View 속성
| 필드 |
유형 |
설명 |
view_id |
string |
페이지 방문 시 생성되는 고유 ID |
view_referrer |
string |
페이지 출처, 페이지의 상위 |
view_name |
string |
페이지 이름 |
Action 속성
| 필드 |
유형 |
설명 |
action_id |
string |
사용자 페이지 작업 시 생성되는 고유 ID |
action_name |
string |
작업 이름 |
action_type |
string |
작업 유형(콜드/핫 스타트, 클릭 등) |
Resource 속성
| 필드 |
유형 |
설명 |
resource_url |
string |
리소스 URL |
resource_url_host |
string |
리소스 URL 도메인 부분 |
resource_url_path |
string |
리소스 URL path 부분 |
resource_url_query |
string |
리소스 URL query 부분 |
resource_url_path_group |
string |
리소스 URL path 그룹 |
resource_type |
string |
리소스의 카테고리 |
resource_method |
string |
리소스 요청 방식 |
resource_status |
string |
리소스 요청 반환 상태 값 |
resource_status_group |
string |
리소스 요청 반환 상태 그룹 값 |
resource_host_ip |
string |
리소스 URL 접속 대상 IP |
resource_id |
string |
리소스 요청 고유 ID |
response_connection |
string |
응답 헤더 Connection 값 |
response_content_type |
string |
응답 헤더 Content-Type 값 |
response_content_encoding |
string |
응답 헤더 Content-Encoding 값 |
span_id |
string |
분산 추적 연결 span id |
trace_id |
string |
분산 추적 연결 trace id |
session_has_replay |
boolean |
현재 Resource가 속한 세션이 Session Replay 데이터와 연결되어 있는지 여부 |
지표
| 필드 |
유형 |
설명 |
resource_size |
number |
리소스 크기, 기본 단위: byte |
resource_request_size |
number |
리소스 요청 크기, 기본 단위: byte |
resource_dns |
number(ns) |
리소스 로딩 DNS 해석 시간 계산 방식: domainLookupEnd - domainLookupStart |
resource_tcp |
number(ns) |
리소스 로딩 TCP 연결 시간 계산 방식: connectEnd - connectStart |
resource_ssl |
number(ns) |
리소스 로딩 SSL 연결 시간 계산 방식: connectEnd - secureConnectStart |
resource_ttfb |
number(ns) |
리소스 로딩 요청 응답 시간 계산 방식: responseStart - requestStart |
resource_trans |
number(ns) |
리소스 로딩 콘텐츠 전송 시간 계산 방식: responseEnd - responseStart |
resource_first_byte |
number(ns) |
리소스 로딩 첫 바이트 시간 계산 방식: responseStart - domainLookupStart |
duration |
number(ns) |
리소스 로딩 시간 계산 방식: duration(responseEnd-startTime) |
resource_dns_time |
object |
DNS 단계 소요 시간, 구조: {start, duration} |
resource_connect_time |
object |
TCP 연결 단계 소요 시간, 구조: {start, duration} |
resource_first_byte_time |
object |
첫 바이트 단계 소요 시간, 구조: {start, duration} |
resource_ssl_time |
object |
SSL 단계 소요 시간, 구조: {start, duration} |
resource_download_time |
object |
다운로드 단계 소요 시간, 구조: {start, duration} |
resource_redirect_time |
object |
리다이렉션 단계 소요 시간, 구조: {start, duration} |
resource_http_protocol |
string |
리소스 요청에 사용된 네트워크 프로토콜 |
resource_connection_reuse |
boolean |
리소스 요청이 연결을 재사용하는지 여부 |
request_header |
string |
리소스 요청 헤더 |
response_header |
string |
리소스 응답 헤더 |
네트워크 스냅샷
| 필드 |
유형 |
설명 |
network_available |
boolean |
Resource 시작 시 네트워크 사용 가능 여부 |
Error
View 속성
| 필드 |
유형 |
설명 |
view_id |
string |
페이지 방문 시 생성되는 고유 ID |
view_referrer |
string |
페이지 출처, 페이지의 상위 |
view_name |
string |
페이지 이름 |
Action 속성
| 필드 |
유형 |
설명 |
action_id |
string |
사용자 페이지 작업 시 생성되는 고유 ID |
action_name |
string |
작업 이름 |
Error 속성
| 필드 |
유형 |
설명 |
error_source |
string |
오류 출처, 참조값: logger & network |
error_type |
string |
오류 유형 logger error type: anr_error | ios_crash network error type: network_error |
error_situation |
string |
오류 발생 시점, 참조값: startup (시작 시) 및 run (실행 중) |
session_has_replay |
boolean |
현재 Error가 속한 세션이 Session Replay 데이터와 연결되어 있는지 여부 |
type=network인 경우, 다음 Network Error 속성이 추가됩니다.
| 필드 |
유형 |
설명 |
resource_id |
string |
리소스 요청 고유 ID |
resource_status |
string |
리소스 요청 반환 상태 값 |
resource_url |
string |
리소스 URL |
resource_url_host |
string |
리소스 URL 도메인 부분 |
resource_url_path |
string |
리소스 URL path 부분 |
resource_url_path_group |
string |
리소스 URL path 그룹 |
resource_status_group |
string |
리소스 요청 반환 상태 그룹 값 |
resource_method |
string |
리소스 요청 방식 |
Error 모니터링 속성
| 필드 |
유형 |
설명 |
memory_total |
string |
선택 사항, 메모리 총량 |
memory_use |
number |
선택 사항, 메모리 사용률 |
cpu_use |
number |
선택 사항, CPU 사용률 |
battery_use |
number |
선택 사항, 현재 휴대폰 배터리 잔량 (tvOS 미지원) |
carrier |
string |
선택 사항, 통신사 정보 (iOS 지원) |
locale |
string |
현재 시스템 언어 |
지표
| 필드 |
유형 |
설명 |
error_message |
string |
오류 정보 |
error_stack |
string |
오류 스택 |
foreground_crash_free_duration |
number(ns) |
크래시 발생 전 애플리케이션이 포그라운드에 있었던 무중단 기간 |
background_crash_free_duration |
number(ns) |
크래시 발생 전 애플리케이션이 백그라운드에 있었던 무중단 기간 |
crash_extra |
object |
크래시 추가 정보, 예: 레지스터 정보 |
Long Task
View 속성
| 필드 |
유형 |
설명 |
view_id |
string |
페이지 방문 시 생성되는 고유 ID |
view_referrer |
string |
페이지 출처, 페이지의 상위 |
view_name |
string |
페이지 이름 |
Action 속성
| 필드 |
유형 |
설명 |
action_id |
string |
사용자 페이지 작업 시 생성되는 고유 ID |
action_name |
string |
작업 이름 |
지표
| 필드 |
유형 |
설명 |
duration |
number(ns) |
멈춤(지연) 시간 |
long_task_stack |
string |
멈춤(지연) 스택 |
session_has_replay |
boolean |
현재 Long Task가 속한 세션이 Session Replay 데이터와 연결되어 있는지 여부 |
Action
View 속성
| 필드 |
유형 |
설명 |
view_id |
string |
페이지 방문 시 생성되는 고유 ID |
view_referrer |
string |
페이지 출처, 페이지의 상위 |
view_name |
string |
페이지 이름 |
Action 속성
| 필드 |
유형 |
설명 |
action_id |
string |
사용자 페이지 작업 시 생성되는 고유 ID |
action_name |
string |
작업 이름, 기본 시작 Action에는 app_hot_start, app_cold_start, app_warm_start가 포함됩니다. |
action_type |
string |
작업 유형, 참조값: click, launch_hot, launch_cold, launch_warm |
session_has_replay |
boolean |
현재 Action이 속한 세션이 Session Replay 데이터와 연결되어 있는지 여부 |
지표
| 필드 |
유형 |
설명 |
duration |
number(ns) |
페이지 작업 소요 시간 |
app_pre_runtime_init_time |
object |
시작 단계 지표, 런타임 초기화 전 소요 시간, 구조: {start, duration} |
app_runtime_init_time |
object |
시작 단계 지표, 런타임 초기화 소요 시간, 구조: {start, duration} |
app_uikit_init_time |
object |
시작 단계 지표, UIKit 초기화 소요 시간, 구조: {start, duration} |
app_application_init_time |
object |
시작 단계 지표, Application 초기화 소요 시간, 구조: {start, duration} |
app_first_frame_init_time |
object |
시작 단계 지표, 첫 프레임 렌더링 소요 시간, 구조: {start, duration} |
app_launch_type |
string |
콜드 스타트 유형, action_type=launch_cold인 경우에만上报, 참조값: foreground, background |
통계 지표
| 필드 |
유형 |
설명 |
action_long_task_count |
number |
작업과 연결된 긴 작업 횟수 |
action_resource_count |
number |
작업과 연결된 리소스 요청 횟수 |
action_error_count |
number |
작업과 연결된 오류 횟수 |
WebView 연결
WebView JSBridge 데이터가 RUM에 수집될 때, SDK는 해당 데이터에 is_web_view=true를 추가하여 이 데이터가 WebView에서 왔음을 식별합니다. WebView 데이터 필드는 Web SDK上报 필드를 기준으로 하며, native iOS 필드 테이블에는 이 연결 설명만 유지됩니다.