RUM 설정¶
RUM 획득¶
일반 uni-app:
uni 미니프로그램:
uni 미니프로그램은 호스트 App이 RUM 초기화를 완료하며, rum.setConfig()를 호출하지 않습니다. 이 페이지의 자동 수집기와 수동 수집 API는 호스트 초기화 완료 후 사용할 수 있습니다.
RUM 초기화 설정¶
rum.setConfig({
androidAppId: 'YOUR_ANDROID_APP_ID',
iOSAppId: 'YOUR_IOS_APP_ID',
harmonyAppId: 'YOUR_HARMONY_APP_ID',
errorMonitorType: 'all',
deviceMonitorType: ['cpu', 'memory']
});
| 파라미터 이름 | 파라미터 유형 | 필수 | 설명 |
|---|---|---|---|
| androidAppId | string | Android 릴리스 시 필수 | Android 플랫폼 appId |
| iOSAppId | string | iOS 릴리스 시 필수 | iOS 플랫폼 appId |
| harmonyAppId | string | HarmonyOS 릴리스 시 필수 | HarmonyOS 플랫폼 appId |
| sampleRate | number | 아니요 | 샘플링률, 범위 [0,1], 기본값 1 |
| sessionOnErrorSampleRate | number | 아니요 | 오류 수집률, 범위 [0,1], 기본값 0, SDK 0.2.2 이상 지원 |
| enableNativeUserAction | boolean | 아니요 | Native Action 추적 활성화 여부, 순수 uni-app 애플리케이션은 비활성화 권장, Android 클라우드 패키징 미지원 |
| enableNativeUserResource | boolean | 아니요 | Native Resource 자동 추적 활성화 여부, Android 클라우드 패키징 미지원. uni-app이 iOS에서 시스템 API를 통해 네트워크 요청을 시작하므로, 활성화 시 iOS 요청이 자동 수집됩니다. 이 경우 iOS 측 수동 Resource 수집을 차단하여 중복 수집을 방지하십시오 |
| enableNativeUserView | boolean | 아니요 | Native View 자동 추적 활성화 여부, 순수 uni-app 애플리케이션은 비활성화 권장 |
| errorMonitorType | string/array | 아니요 | 오류 보충 모니터링 유형: all、battery、memory、cpu |
| deviceMonitorType | string/array | 아니요 | 페이지 모니터링 유형: all、battery(Android만 해당)、memory、cpu、fps |
| detectFrequency | string | 아니요 | 페이지 모니터링 빈도: normal、frequent、rare |
| globalContext | object | 아니요 | 사용자 정의 글로벌 파라미터, 특수 key: track_id |
| enableResourceHostIP | boolean | 아니요 | 대상 도메인 IP 수집 여부, enableNativeUserResource = true의 기본 수집에만 영향 |
| enableTrackNativeCrash | boolean | 아니요 | Android Java Crash 및 OC/C/C++ 크래시 모니터링 활성화 여부 |
| enableTrackNativeAppANR | boolean | 아니요 | Native ANR 모니터링 활성화 여부 |
| enableTrackNativeFreeze | boolean | 아니요 | Native Freeze 수집 여부 |
| nativeFreezeDurationMs | number | 아니요 | Native Freeze 임계값, 범위 [100,), 단위 밀리초 |
| rumDiscardStrategy | string | 아니요 | 폐기 전략: discard、discardOldest |
| rumCacheLimitCount | number | 아니요 | 로컬 캐시 최대 RUM 항목 수 제한, 기본값 100000 |
| enableTraceWebView | boolean | 아니요 | 네이티브 SDK를 통한 WebView 데이터 수집 활성화 여부, 기본값 true, SDK 0.2.6 이상 지원 |
| allowWebViewHost | array | 아니요 | 데이터 추적을 허용하는 WebView host 목록, null 시 전체 수집 |
RUM 사용자 데이터 추적¶
Action¶
HarmonyOS에서 클릭, Tap, 길게 누르기 및 Tab 전환 Action을 자동으로 수집하려면 JS Action 수집기를 명시적으로 시작해야 합니다:
Android, iOS의 Native Action 자동 수집은 enableNativeUserAction으로 제어됩니다.
API - startAction¶
RUM Action을 시작합니다.
RUM은 해당 Action 중에 트리거될 수 있는 Resource, Error, LongTask 이벤트를 바인딩합니다. 0.1s 내에 여러 번 호출하지 마십시오. 동일 View는 동시에 하나의 Action만 연결되며, 이전 Action이 종료되지 않으면 새 Action은 폐기됩니다. 이는 addAction과 상호 영향을 미치지 않습니다.
| 파라미터 이름 | 파라미터 유형 | 필수 | 파라미터 설명 |
|---|---|---|---|
| actionName | string | 예 | 이벤트 이름 |
| actionType | string | 예 | 이벤트 유형 |
| property | object | 아니요 | 이벤트 컨텍스트 |
API - addAction¶
Action 이벤트를 추가합니다. 이러한 데이터는 Error, Resource, LongTask에 연결할 수 없으며 폐기 로직이 없습니다.
| 파라미터 이름 | 파라미터 유형 | 필수 | 파라미터 설명 |
|---|---|---|---|
| actionName | string | 예 | 이벤트 이름 |
| actionType | string | 예 | 이벤트 유형 |
| property | object | 아니요 | 이벤트 컨텍스트 |
View¶
자동 수집¶
gcViewTracking 사용을 권장합니다. 페이지의 onLoad, onReady, onShow, onHide, onUnload 및 App 전/후방 이벤트를 통합적으로 모니터링하고, 네이티브 RUM View API를 자동으로 호출합니다.
프로젝트 main.js에서 가능한 한 빨리 한 번 호출하십시오. Vue 2는 루트 Vue 인스턴스를 생성하기 전에 호출하고, Vue 3는 createSSRApp이 반환한 app을 전달해야 합니다:
Vue 2¶
import App from './App';
import { gcViewTracking } from '@/uni_modules/GC-JSPlugin';
import Vue from 'vue';
gcViewTracking.startTracking();
const app = new Vue({
...App
});
app.$mount();
Vue 3¶
import App from './App';
import { gcViewTracking } from '@/uni_modules/GC-JSPlugin';
import { createSSRApp } from 'vue';
export function createApp() {
const app = createSSRApp(App);
gcViewTracking.startTracking(app);
return { app };
}
수집 규칙:
- 페이지가 처음 표시될 때,
loading_time은onLoad부터onReady까지 계산되며, 단위는 나노초입니다. - 수집기가 너무 늦게 시작되거나 전체 페이지 라이프사이클을 수신하지 못한 경우, 신뢰할 수 없는 로딩 시간은
-1을 사용합니다. 페이지가 다시 표시되거나 App이 포그라운드로 돌아올 때는0을 사용합니다. - 페이지가 숨겨지거나, 언로드되거나, App이 백그라운드로 전환되면 현재 View가 중지됩니다. 동일 라이프사이클 내의 중복
onShow,resume은 자동으로 중복 제거됩니다. - 라우팅 실패 시 View가 생성되지 않습니다. 동일 라우트의 여러 페이지 인스턴스는 각각 상태를 유지합니다.
호환 수집 방식¶
이전 버전의 mixin 방식은 호환성을 위해 유지됩니다. 새 프로젝트에서는 gcViewTracking을 우선 사용하고, 두 가지 자동 수집 방식을 동시에 활성화하지 마십시오. 그렇지 않으면 중복 View가 생성될 수 있습니다.
App.vue + 첫 번째 페이지 조합 설정은 SDK 패키지 예제 프로젝트 Hbuilder_Example/App.vue 및 Hbuilder_Example/pages/index/index.vue를 참조하십시오:
// step 1. GC-JSPlugin을 프로젝트 uni_modules에 추가
// step 2. App.vue에 Router 모니터링 추가
<script>
import { gcWatchRouter } from '@/uni_modules/GC-JSPlugin';
export default {
mixins: [gcWatchRouter],
}
</script>
// step 3. 첫 번째 page 페이지에 pageMixin 추가
<script>
import { gcPageMixin } from '@/uni_modules/GC-JSPlugin';
export default {
mixins: [gcPageMixin],
}
</script>
지정된 페이지만 수집하는 경우, SDK 패키지 예제 프로젝트 Hbuilder_Example/pages/rum/index.vue를 참조하십시오:
<script>
import { gcPageViewMixinOnly } from '@/uni_modules/GC-JSPlugin';
export default {
mixins: [gcPageViewMixinOnly],
}
</script>
수동 수집¶
rum.onCreateView({
viewName: 'Current Page Name',
loadTime: 100000000
});
rum.startView({
viewName: 'Current Page Name'
});
rum.stopView();
API - onCreateView¶
페이지 로딩 시간 기록을 생성합니다.
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| viewName | string | 예 | 페이지 이름 |
| loadTime | number | 예 | 페이지 로딩 시간, 단위 나노초 |
API - startView¶
페이지 진입.
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| viewName | string | 예 | 페이지 이름 |
| property | object | 아니요 | 이벤트 컨텍스트 |
API - stopView¶
페이지 이탈.
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| property | object | 아니요 | 이벤트 컨텍스트 |
Error¶
자동 수집¶
수동 수집¶
API - addError¶
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| message | string | 예 | 오류 메시지 |
| stack | string | 예 | 스택 정보 |
| state | string | 아니요 | App 실행 상태: unknown、startup、run |
| type | string | 아니요 | 오류 유형, 기본값 uniapp_crash |
| property | object | 아니요 | 이벤트 컨텍스트 |
Resource¶
자동 수집¶
0.3.0부터는 gcResourceTracking 사용을 권장합니다. Android, iOS, HarmonyOS의 표준 uni.request를 가로채어 요청 성공 또는 실패로 생성된 RUM Resource를 자동으로 수집합니다. Trace가 초기화된 경우, 설정된 추적 유형에 따라 Trace Header를 생성하여 요청 헤더에 추가합니다. enableLinkRUMData를 활성화하면 RUM Resource와 Trace를 연결할 수 있습니다. 비즈니스 코드에서 이미 설정된 동일한 이름의 요청 헤더는 덮어쓰지 않습니다.
요청을 보내기 전에 startTracking을 한 번 호출한 후, 계속해서 uni.request를 직접 사용하십시오:
uni.request({
url: requestUrl,
method: method,
header: header,
timeout: 30000,
success(res) {
console.log('success:' + JSON.stringify(res));
},
fail(err) {
console.log('fail:' + JSON.stringify(err));
},
complete() {
console.log('complete');
}
});
startTracking 설정:
| 필드 | 유형 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
| enableIOS | boolean | 아니요 | true |
iOS에서 JS 인터셉터를 통해 uni.request를 수집할지 여부. Android, HarmonyOS는 이 파라미터의 영향을 받지 않습니다. iOS에서 enableNativeUserResource를 활성화한 경우 false로 설정하여 네이티브 URLSession 자동 수집과의 중복을 방지하십시오 |
// iOS에서 rum.setConfig({ enableNativeUserResource: true })로 네이티브 수집이 활성화된 경우:
gcResourceTracking.startTracking({
enableIOS: false
});
사용 설명:
- App Android, App iOS, App HarmonyOS를 지원합니다. 애플리케이션 시작 단계에서 첫 번째
uni.request호출 전에 실행해야 합니다. startTracking은 한 번만 호출해야 하며, 반복 호출해도 인터셉터가 중복 설치되지 않습니다.- Trace가 초기화된 경우 요청에 자동으로 Trace Header가 추가됩니다. 비즈니스 코드에서 명시적으로 설정한 동일한 이름의 요청 헤더가 우선합니다.
- 기존
success,fail,complete콜백은 그대로 유지됩니다. gcRequest.request는 0.2.7부터 폐기된 호환 API로만 유지됩니다. 전역 수집기를 활성화한 후에는uni.request를 대체할 필요가 없으며, 두 가지 수집 방식을 병렬로 사용하지 마십시오.
gcRequest.request의 이전 설정은 아직 마이그레이션되지 않은 프로젝트에서만 참조하십시오:
| 호환 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| filterPlatform | array | 아니요 | enableNativeUserResource를 활성화한 경우 filterPlatform: ["ios"]를 설정하여 iOS 측의 이전 버전 수동 수집을 차단할 수 있습니다 |
수동 수집¶
startResource, stopResource, addResource를 수동으로 호출하여 직접 구현할 수 있습니다. GCResourceTracking.js를 참조하십시오.
API - startResource¶
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| key | string | 예 | 요청 고유 식별자 |
| property | object | 아니요 | 이벤트 컨텍스트 |
API - stopResource¶
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| key | string | 예 | 요청 고유 식별자 |
| property | object | 아니요 | 이벤트 컨텍스트 |
API - addResource¶
| 파라미터 이름 | 파라미터 유형 | 필수 | 파라미터 설명 |
|---|---|---|---|
| key | string | 예 | 요청 고유 식별자 |
| content | content object | 예 | 요청 관련 데이터 |
| property | object | 아니요 | 이벤트 컨텍스트 |
content object¶
| 프로토타입 | 파라미터 유형 | 파라미터 설명 |
|---|---|---|
| url | string | 요청 URL |
| httpMethod | string | HTTP 메서드 |
| requestHeader | object | 요청 헤더 |
| responseHeader | object | 응답 헤더 |
| responseBody | string | 응답 결과 |
| resourceStatus | number | 요청 결과 상태 코드 |
| errorMessage | string | 요청 실패 정보 |
| errorStack | string | 요청 실패 스택 |
| fetchStartTime | number | 요청 시작 시간, 단위 나노초 |
| requestStartTime | number | 요청 전송 시작 시간, 단위 나노초 |
| responseStartTime | number | 응답 수신 시작 시간, 단위 나노초 |
| responseEndTime | number | 응답 수신 완료 시간, 단위 나노초 |
| tcpStartTime | number | TCP 연결 시작 시간, 단위 나노초 |
| tcpEndTime | number | TCP 연결 종료 시간, 단위 나노초 |
| dnsStartTime | number | DNS 해석 시작 시간, 단위 나노초 |
| dnsEndTime | number | DNS 해석 종료 시간, 단위 나노초 |
| sslStartTime | number | SSL 연결 시작 시간, 단위 나노초 |
| sslEndTime | number | SSL 연결 종료 시간, 단위 나노초 |