RUM 설정¶
RUM 초기화 설정¶
var rum = uni.requireNativePlugin("GCUniPlugin-RUM");
rum.setConfig({
androidAppId: 'YOUR_ANDROID_APP_ID',
iOSAppId: 'YOUR_IOS_APP_ID',
errorMonitorType: 'all',
deviceMonitorType: ['cpu', 'memory']
});
| 파라미터 이름 | 파라미터 유형 | 필수 | 설명 |
|---|---|---|---|
| androidAppId | string | 예 | Android 플랫폼 appId |
| iOSAppId | string | 예 | iOS 플랫폼 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 | 아니요 | 사용자 정의 전역 파라미터, 특수 키: 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 호스트 목록, null인 경우 전체 수집 |
RUM 사용자 데이터 추적¶
Action¶
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 및 앱 포그라운드/백그라운드 이벤트를 통합적으로 수신하고, 네이티브 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을 사용합니다. 페이지가 다시 표시되거나 앱이 포그라운드로 돌아올 때는0을 사용합니다. - 페이지가 숨겨지거나, 언로드되거나, 앱이 백그라운드로 전환될 때 현재 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 | 아니요 | 앱 실행 상태: unknown, startup, run |
| type | string | 아니요 | 오류 유형, 기본값 uniapp_crash |
| property | object | 아니요 | 이벤트 컨텍스트 |
Resource¶
자동 수집¶
SDK 0.2.7 이상에서는 gcResourceTracking 사용을 권장합니다. 표준 uni.request에 전역 인터셉터를 설치하여 Resource 식별자를 자동 생성하고, Trace 설정에 맞는 요청 헤더를 주입하며, 요청 성공 또는 실패로 인한 RUM Resource를 수집합니다.
요청을 보내기 전에 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는 항상 활성화됩니다. iOS에서 이미 enableNativeUserResource가 활성화된 경우 false로 설정하여 네이티브 URLSession 자동 수집과의 중복을 방지하세요. |
// iOS에서 이미 rum.setConfig({ enableNativeUserResource: true })로 네이티브 수집을 활성화한 경우:
gcResourceTracking.startTracking({
enableIOS: false
});
사용 설명:
- App Android 및 App iOS에서만 지원됩니다. 애플리케이션 시작 단계에서, 첫 번째
uni.request호출 전에 실행해야 합니다. startTracking은 한 번만 호출해야 합니다. 반복 호출해도 인터셉터가 다시 설치되지 않습니다.- Trace가 이미 설정된 경우, 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를 호출하여 직접 구현할 수 있습니다. GCRequest.js를 참조하세요.
API - startResource¶
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| key | string | 예 | 요청 고유 식별자 |
| property | object | 아니요 | 이벤트 컨텍스트 |
API - stopResource¶
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| key | string | 예 | 요청 고유 식별자 |
| property | object | 아니요 | 이벤트 컨텍스트 |
API - addResource¶
| 파라미터 이름 | 파라미터 유형 | 필수 | 파라미터 설명 |
|---|---|---|---|
| key | string | 예 | 요청 고유 식별자 |
| content | content object | 예 | 요청 관련 데이터 |
content object¶
| 프로토타입 | 파라미터 유형 | 파라미터 설명 |
|---|---|---|
| url | string | 요청 URL |
| httpMethod | string | HTTP 메서드 |
| requestHeader | object | 요청 헤더 |
| responseHeader | object | 응답 헤더 |
| responseBody | string | 응답 결과 |
| resourceStatus | string | 요청 결과 상태 코드 |