跳转至

RUM 配置

获取 RUM

普通 uni-app:

import { rum } from '@/uni_modules/GC-UniPlugin';

uni 小程序:

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

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 错误补充监控类型:allbatterymemorycpu
deviceMonitorType string/array 页面监控类型:allbattery(仅 Android)、memorycpufps
detectFrequency string 页面监控频率:normalfrequentrare
globalContext object 自定义全局参数,特殊 key: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 丢弃策略:discarddiscardOldest
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 采集器:

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

gcActionTracking.startTracking();

Android、iOS 的 Native Action 自动采集由 enableNativeUserAction 控制。

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。它会统一监听页面的 onLoadonReadyonShowonHideonUnload 以及 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_timeonLoadonReady 计算,单位为纳秒。
  • 采集器启动过晚或未收到完整页面生命周期时,无法可靠计算的加载时间使用 -1;页面再次显示或 App 回到前台时使用 0
  • 页面隐藏、卸载或 App 进入后台时会停止当前 View;同一生命周期内的重复 onShowresume 会自动去重。
  • 路由失败不会生成 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 App 运行状态:unknownstartuprun
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

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、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;业务代码显式设置的同名请求头优先。
  • 原有 successfailcomplete 回调保持不变。
  • gcRequest.request 从 0.2.7 起仅作为废弃兼容 API 保留。启用全局采集器后不需要替换 uni.request,也不要并行使用两种采集方式。

gcRequest.request 的旧配置仅供尚未迁移的项目参考:

兼容字段 类型 必须 说明
filterPlatform array 当启用 enableNativeUserResource 后,可设置 filterPlatform: ["ios"] 屏蔽 iOS 侧旧版手动采集

手动采集

通过手动调用 startResourcestopResourceaddResource 自行实现,可参考 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

prototype 参数类型 参数说明
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 连接结束时间,单位纳秒

文档评价

文档内容是否对您有帮助?