콘텐츠로 이동

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 CrashOC/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 사용자 데이터 추적

var rum = uni.requireNativePlugin("GCUniPlugin-RUM");

Action

API - startAction

RUM Action을 시작합니다.

RUM은 이 Action 기간 동안 발생할 수 있는 Resource, Error, LongTask 이벤트를 바인딩합니다. 0.1s 내에 여러 번 호출하지 마십시오. 동일 View에서 동시에 하나의 Action만 연결되며, 이전 Action이 종료되지 않은 경우 새 Action은 폐기됩니다. addAction과는 서로 영향을 미치지 않습니다.

rum.startAction({
    actionName: 'action name',
    actionType: 'action type'
});
파라미터 이름 파라미터 유형 필수 파라미터 설명
actionName string 이벤트 이름
actionType string 이벤트 유형
property object 아니요 이벤트 컨텍스트

API - addAction

Action 이벤트를 추가합니다. 이러한 데이터는 Error, Resource, LongTask와 연결될 수 없으며, 폐기 로직이 없습니다.

rum.addAction({
    actionName: 'action name',
    actionType: 'action type'
});
파라미터 이름 파라미터 유형 필수 파라미터 설명
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_timeonLoad부터 onReady까지 계산되며, 단위는 나노초입니다.
  • 수집기가 너무 늦게 시작되었거나 전체 페이지 라이프사이클을 수신하지 못한 경우, 신뢰할 수 없게 계산된 로드 시간은 -1을 사용합니다. 페이지가 다시 표시되거나 앱이 포그라운드로 돌아올 때는 0을 사용합니다.
  • 페이지가 숨겨지거나, 언로드되거나, 앱이 백그라운드로 전환될 때 현재 View가 중지됩니다. 동일한 라이프사이클 내에서 중복된 onShow, resume은 자동으로 중복 제거됩니다.
  • 라우팅에 실패하면 View가 생성되지 않습니다. 동일한 라우트의 여러 페이지 인스턴스는 각각 상태를 유지합니다.
호환 수집 방식

이전 버전의 mixin 방식은 호환성을 위해 계속 유지됩니다. 새 프로젝트는 gcViewTracking을 우선 사용하고, 두 가지 자동 수집 방식을 동시에 활성화하지 마십시오. 그렇지 않으면 중복 View가 발생할 수 있습니다.

App.vue + 첫 번째 페이지 조합 구성은 SDK 패키지 예제 프로젝트 Hbuilder_Example/App.vueHbuilder_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

자동 수집

import { gcErrorTracking } from '@/uni_modules/GC-JSPlugin';

gcErrorTracking.startTracking();

수동 수집

rum.addError({
    message: 'Error message',
    stack: 'Error stack'
});

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를 직접 사용하세요.

import { gcResourceTracking } from '@/uni_modules/GC-JSPlugin';

gcResourceTracking.startTracking();
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 요청 결과 상태 코드

문서 평가

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