跳转至

RUM 配置

采样字段迁移(ft-sdk >= 1.7.6):setSessionSamplingRate 使用 0~100 的浮点百分比;旧 setSamplingRate 保留 0~1 单位,迁移时数值乘以 100。新字段仅在显式设置时优先,非法值会抛出异常且不改变之前的有效值。低于此版本继续使用旧方法;废弃不代表移除,旧方法仍保留原单位和行为。

RUM 初始化配置

FTSdk.initRUMWithConfig(
        new FTRUMConfig()
            .setRumAppId(RUM_APP_ID)
            .setEnableTraceUserView(true)
            .setDeviceMetricsMonitorType(DeviceMetricsMonitorType.ALL.getValue())
            .setEnableTraceUserAction(true)
            .setEnableTraceUserResource(true)
            .setEnableTrackAppUIBlock(true)
            .setEnableTrackAppCrash(true)
            .setEnableTrackAppANR(true)
            .setExtraMonitorTypeWithError(ErrorMonitorType.ALL.getValue())
);
FTSdk.initRUMWithConfig(
    FTRUMConfig()
        .setRumAppId(RUM_APP_ID)
        .setEnableTraceUserView(true)
        .setDeviceMetricsMonitorType(DeviceMetricsMonitorType.ALL.getValue())
        .setEnableTraceUserAction(true)
        .setEnableTraceUserResource(true)
        .setEnableTrackAppUIBlock(true)
        .setEnableTrackAppCrash(true)
        .setEnableTrackAppANR(true)
        .setExtraMonitorTypeWithError(ErrorMonitorType.ALL.getValue())
)
方法名 类型 必须 含义
setRumAppId String 是 设置 RUM AppId。对应设置 RUM appid,才会开启 RUM 的采集功能,获取 appid 方法
setSessionSamplingRate Float 否 采样百分比,范围 [0,100],默认 100;支持小数,例如 0.1 表示 0.1%。0 表示不采集,100 表示全采集。新字段显式设置后优先于旧字段,与设置顺序无关。 ft-sdk >= 1.7.6 支持。
setSamplingRate Float 否 自 ft-sdk 1.7.6 起废弃,保留兼容。设置采集率,取值范围 [0,1],0 表示不采集,1 表示全采集,默认值为 1。作用域为同一 session_id 下所有 View、Action、LongTask、Error 数据
setSessionOnErrorSamplingRate float 否 错误会话采样百分比,范围 [0,100],默认 0,支持小数。普通会话未采样且发生错误时,按此比例补采错误前 1 分钟范围数据;显式新字段优先于旧字段。 ft-sdk >= 1.7.6 支持。
setSessionErrorSampleRate Float 否 自 ft-sdk 1.7.6 起废弃,保留 0~1 兼容。设置错误采集率。当会话未被 setSamplingRate 采样时,若会话期间发生错误,可以采集到错误前 1 分钟范围的数据。取值范围 [0,1],0 表示不采集,1 表示全采集,默认值为 0。作用域为同一 session_id 下所有 View、Action、LongTask、Error 数据,ft-sdk 1.6.11 以上支持
setEnableTrackAppCrash Boolean 否 是否上报 App 崩溃日志,默认为 false,开启后会在错误分析中显示错误堆栈数据。关于崩溃日志中混淆内容转换的问题,可参考 符号文件上传。ft-sdk 1.5.1 以上版本,可以通过 extraLogCatWithJavaCrash、extraLogCatWithNativeCrash 设置在 Java Crash 和 Native Crash 是否显示 logcat
setIssueDataProvider FTIssueDataProvider 否 为自动采集的 Java/Native Crash 和 watchdog/native ANR Error 添加经过校验的自定义字段,包含历史恢复数据,默认为不设置,ft-sdk 1.7.5 以上支持,详见 Crash/ANR 自定义字段
setExtraMonitorTypeWithError Array 否 设置辅助监控信息,添加附加监控数据到 RUM 崩溃数据中。ErrorMonitorType.BATTERY 为电池余量,ErrorMonitorType.MEMORY 为内存用量,ErrorMonitorType.CPU 为 CPU 占有率,默认不设置
setDeviceMetricsMonitorType Array 否 设置 View 监控信息,在 View 周期中,添加监控数据。DeviceMetricsMonitorType.BATTERY 监控当前页的最高电流输出情况,DeviceMetricsMonitorType.MEMORY 监控当前应用使用内存情况,DeviceMetricsMonitorType.CPU 监控 CPU 跳动次数,DeviceMetricsMonitorType.FPS 监控屏幕帧率。监控周期可选 DetectFrequency.DEFAULT 500 毫秒、DetectFrequency.FREQUENT 100 毫秒、DetectFrequency.RARE 1 秒,默认不设置
setEnableTrackAppANR Boolean 否 是否开启 ANR 采集,默认为 false。ft-sdk 1.7.5 起,Android 11(API 30)及以上在进程后续启动时通过 ApplicationExitInfo 恢复致命 ANR,不采集非致命实时 ANR;Android 10(API 29)及以下继续使用实时 watchdog/native ANR 采集。extraLogCatWithANR 仅用于 API 29 及以下的实时采集路径
setEnableTrackAppUIBlock Boolean, long 否 是否开启 UI 卡顿检测,默认为 false,ft-sdk 1.6.4 以上版本可以通过 blockDurationMs 控制检测时间范围 [100,),单位毫秒,默认是 1 秒
setEnableTraceUserAction Boolean 否 是否自动追踪用户操作,目前只支持用户启动和点击操作。该配置依赖 ft-plugin,默认为 false
setEnableTraceUserView Boolean 否 是否自动追踪用户页面操作,该配置依赖 ft-plugin,默认为 false
setEnableTraceUserViewInFragment Boolean 否 是否自动追踪 Fragment 类型页面数据,该配置依赖 ft-plugin,默认为 false,ft-sdk 1.6.11 以上支持
setInitialResourceIdentifier FTInitialResourceIdentifier 否 设置参与原生 View network_settled_time 计算的 Resource 判断规则,默认使用 100 ms 时间窗口。不接受 null,规则返回 false 仅排除该指标贡献,不丢弃 Resource 事件。详见 View 耗时指标自定义规则
setLastInteractionIdentifier FTLastInteractionIdentifier 否 设置原生 View interaction_to_next_view_time 的上一页交互判断规则,默认要求时间差大于 0 且小于 3000 ms。传入 null 关闭自动 INV。详见 View 耗时指标自定义规则
setEnableTraceUserResource Boolean 否 是否采集网络请求 Resource,默认为 false。支持 OkHttp、HttpURLConnection / HttpsURLConnection 和 OkHttp WebSocket 握手,各方式的接入要求见 Resource 自动采集
setEnableHttpURLConnectionResource Boolean 否 是否自动采集 HttpURLConnection / HttpsURLConnection Resource,默认为 false。需同时开启 setEnableTraceUserResource(true),要求 ft-sdk >= 1.7.6-alpha03 和 ft-plugin >= 1.3.9-alpha01,详见 URLConnection 自动采集
setEnableResourceHostIP Boolean 否 是否采集请求目标域名地址的 IP。作用域:只影响 enableTraceUserResource 为 true 的 OkHttp 默认采集,不适用于 URLConnection。自定义 Resource 采集,需要使用 FTResourceEventListener.FTFactory(true) 来开启这个功能。另外,单个 OkHttp 对相同域名存在 IP 缓存机制,相同 OkHttpClient,在连接服务端 IP 不发生变化的前提下,只会生成一次
setResourceUrlHandler Callback 否 设置需要过滤的 Resource 条件,默认不过滤
setOkHttpEventListenerHandler Callback 否 ASM 设置全局 OkHttp EventListener,默认不设置
setOkHttpResourceContentHandler Callback 否 ASM 设置全局 FTResourceInterceptor.ContentHandlerHelper,默认不设置,ft-sdk 1.6.7 以上支持,自定义 Resource
addGlobalContext Dictionary 否 添加自定义标签,用于用户监测数据源区分,如果需要使用追踪功能,则参数 key 为 track_id,value 为任意数值,添加规则注意事项请查阅此处
setVisitorIdConfig FTVisitorIdConfig 否 配置匿名访客标识 Visitor ID,默认为 null(关闭)。传入有效配置后开启,OkHttp Header 注入独立于 RUM/Trace 采样及 Resource 采集开关,ft-sdk >= 1.7.6-alpha04 支持,详见 访客标识 Visitor ID
setRumCacheLimitCount int 否 本地缓存 RUM 限制数量 [10_000,),默认是 100_000,ft-sdk 1.6.6 以上支持
setEnableTraceWebView Boolean 否 是否开启通过 Android SDK 采集 WebView 数据,默认为 true,ft-sdk 1.6.12 以上支持
setAllowWebViewHost Array 否 设置允许数据追踪的 WebView host 地址,null 为全采集,默认为 null,ft-sdk 1.6.12 以上支持;该方法已废弃,ft-sdk 1.7.5 起请使用 FTSDKConfig.setAllowWebViewHost 统一配置 WebView RUM 与 Log
setViewActivityTrackingHandler FTViewActivityTrackingHandler 否 用于自定义 Activity 视图的跟踪方式。当 Activity 生命周期事件发生时,此处理器会被调用来决定如何跟踪该 Activity,默认不做处理,ft-sdk 1.6.13 以上支持
setViewFragmentTrackingHandler FTViewFragmentTrackingHandler 否 用于自定义 Fragment 视图的跟踪方式。当 Fragment 生命周期事件发生时,此处理器会被调用来决定如何跟踪该 Fragment。默认不做处理,ft-sdk 1.6.13 以上支持
setActionTrackingHandler FTActionTrackingHandler 否 用于自定义用户操作的跟踪方式。当用户执行操作时,此处理器会被调用来决定如何跟踪该操作,默认不做处理,ft-sdk 1.6.13 以上支持

RUM 手动埋点

在 FTRUMConfig 配置 enableTraceUserAction、enableTraceUserView、enableTraceUserResource、setEnableTrackAppUIBlock、setEnableTrackAppCrash 和 setEnableTrackAppANR 来实现 Action、View、Resource、LongTask、Error 的自动采集。若需自定义采集,可通过 FTRUMGlobalManager 手动上报。

Action

使用方法

/**
 * 添加 Action
 *
 * @param actionName action 名称
 * @param actionType action 类型
 * @param property   附加属性参数(可选)
 */
public void startAction(String actionName, String actionType, HashMap<String, Object> property)

/**
 * 添加 Action, 此类数据无法关联 Error,Resource,LongTask 数据
 *
 * @param actionName action 名称
 * @param actionType action 类型
 * @param duration   纳秒,持续时间(可选)
 * @param property   扩展属性(可选)
 */
public void addAction(String actionName, String actionType, long duration, HashMap<String, Object> property)
/**
 * 添加 action
 *
 * @param actionName action 名称
 * @param actionType action 类型
 * @param property   附加属性参数(可选)
 */
fun startAction(actionName: String, actionType: String, property: HashMap<String, Any>)

/**
 * 添加 Action
 *
 * @param actionName action 名称
 * @param actionType action 类型
 * @param duration   纳秒,持续时间(可选)
 * @param property   扩展属性(可选)
 */
fun addAction(actionName: String, actionType: String, duration: Long, property: HashMap<String, Any>)

startAction 内部有计算耗时算法,计算期间会尽量与附近发生的 Resource、LongTask、Error 数据做数据关联,设有 100 ms 频繁触发保护,建议用于用户操作类型的数据。如果有频繁调用的需求请使用 addAction,这个数据不会与 startAction 发生冲突,并且不与当下 Resource、LongTask、Error 进行数据关联。

代码示例

// 场景1
FTRUMGlobalManager.get().startAction("login", "action_type");

// 场景2: 动态参数
HashMap<String, Object> map = new HashMap<>();
map.put("ft_key", "ft_value");
FTRUMGlobalManager.get().startAction("login", "action_type", map);

// 场景1
FTRUMGlobalManager.get().addAction("login", "action_type");

// 场景2: 动态参数
HashMap<String, Object> map = new HashMap<>();
map.put("ft_key", "ft_value");
FTRUMGlobalManager.get().addAction("login", "action_type", map);
// 场景1
FTRUMGlobalManager.get().startAction("login", "action_type")

// 场景2: 动态参数
val map = HashMap<String, Any>()
map["ft_key"] = "ft_value"
FTRUMGlobalManager.get().startAction("login", "action_type", map)

// 场景1
FTRUMGlobalManager.get().addAction("login", "action_type")

// 场景2: 动态参数
val map = HashMap<String, Any>()
map["ft_key"] = "ft_value"
FTRUMGlobalManager.get().addAction("login", "action_type", map)

View

使用方法

/**
 * view 起始
 *
 * @param viewName 当前页面名称
 * @param property 附加属性参数(可选)
 */
public void startView(String viewName, HashMap<String, Object> property)

/**
 * view 结束
 *
 * @param property 附加属性参数(可选)
 */
public void stopView(HashMap<String, Object> property)

/**
 * 更新当前 view loading_time 指标,单位纳秒
 *
 * @param duration duration
 */
public void updateLoadTime(long duration)
/**
 * view 起始
 *
 * @param viewName 当前页面名称
 * @param property 附加属性参数(可选)
 */
fun startView(viewName: String, property: HashMap<String, Any>)

/**
 * view 结束
 *
 * @param property 附加属性参数(可选)
 */
fun stopView(property: HashMap<String, Any>)

/**
 * 更新当前 view loading_time 指标,单位纳秒
 *
 * @param duration duration
 */
fun updateLoadTime(duration: Long)

代码示例

@Override
protected void onResume() {
    super.onResume();

    // 场景 1
    FTRUMGlobalManager.get().startView("Current Page Name");

    // 场景 2: 动态参数
    HashMap<String, Object> map = new HashMap<>();
    map.put("ft_key", "ft_value");
    map.put("ft_key_will_change", "ft_value");
    FTRUMGlobalManager.get().startView("Current Page Name", map)
}

@Override
protected void onPause() {
    super.onPause();

    // 场景 1
    FTRUMGlobalManager.get().stopView();

    // 场景 2 : 动态参数
    HashMap<String, Object> map = new HashMap<>();
    map.put("ft_key_will_change", "ft_value_change"); //ft_key_will_change 的值会在 stopView 时被更新为 ft_value_change
    FTRUMGlobalManager.get().stopView(map);

}
override fun onResume() {
    super.onResume()

    // 场景 1
    FTRUMGlobalManager.get().startView("Current Page Name")

    // 场景 2: 动态参数
    val map = HashMap<String, Any>()
    map["ft_key"] = "ft_value"
    map["ft_key_will_change"] = "ft_value"
    FTRUMGlobalManager.get().startView("Current Page Name", map)
}

override fun onPause() {
    super.onPause()

    // 场景 1
    FTRUMGlobalManager.get().stopView()

    // 场景 2 : 动态参数
    val map = HashMap<String, Any>()
    map["ft_key_will_change"] = "ft_value_change" // ft_key_will_change 这个数值,会在 stopView 时候被修改为 ft_value_change
    FTRUMGlobalManager.get().stopView(map)
}

Error

使用方法

/**
 * 添加错误信息
 *
 * @param log       日志
 * @param message   消息
 * @param errorType 错误类型, ErrorType
 * @param state     程序运行状态
 * @param dateline  发生时间,纳秒(可选)
 * @param property  附加属性(可选)
 */
public void addError(String log, String message, long dateline, ErrorType errorType,
                     AppState state, HashMap<String, Object> property)

/**
 * 添加错误信息
 *
 * @param log       日志
 * @param message   消息
 * @param errorType 错误类型, String
 * @param state     程序运行状态
 * @param dateline  发生时间,纳秒(可选)
 * @param property  附加属性(可选)
 */
public void addError(String log, String message, long dateline, String errorType,
                     AppState state, HashMap<String, Object> property)
/**
 * 添加错误信息
 *
 * @param log       日志
 * @param message   消息
 * @param errorType 错误类型, ErrorType
 * @param state     程序运行状态
 * @param dateline  发生时间,纳秒(可选)
 * @param property  附加属性(可选)
 */
fun addError(log: String, message: String, dateline: Long, errorType: ErrorType, state: AppState, property: HashMap<String, Any>)

/**
 * 添加错误信息
 *
 * @param log       日志
 * @param message   消息
 * @param errorType 错误类型, String
 * @param state     程序运行状态
 * @param dateline  发生时间,纳秒(可选)
 * @param property  附加属性(可选)
 */
fun addError(log: String, message: String, dateline: Long, errorType: String, state: AppState, property: HashMap<String, Any>)

代码示例

// 场景 1:
FTRUMGlobalManager.get().addError("error log", "error msg", ErrorType.JAVA, AppState.RUN);

// 场景 2: 延迟记录发生的错误,这里的时间一般为错误发生的时间
FTRUMGlobalManager.get().addError("error log", "error msg", 16789000000000000000L, ErrorType.JAVA, AppState.RUN);

// 场景 3:动态参数
HashMap<String, Object> map = new HashMap<>();
map.put("ft_key", "ft_value");
FTRUMGlobalManager.get().addError("error log", "error msg", ErrorType.JAVA, AppState.RUN, map);
// 场景 1:
FTRUMGlobalManager.get().addError("error log", "error msg", ErrorType.JAVA, AppState.RUN)

// 场景 2: 延迟记录发生的错误,这里的时间一般为错误发生的时间
FTRUMGlobalManager.get().addError("error log", "error msg", 16789000000000000000, ErrorType.JAVA, AppState.RUN)

// 场景 3:动态参数
val map = HashMap<String, Any>()
map["ft_key"] = "ft_value"
FTRUMGlobalManager.get().addError("error log", "error msg", ErrorType.JAVA, AppState.RUN, map)

LongTask

使用方法

/**
 * 添加长任务
 *
 * @param log      日志内容
 * @param duration 持续时间,纳秒
 * @param property 附加属性参数(可选)
 */
public void addLongTask(String log, long duration, HashMap<String, Object> property)
/**
 * 添加长任务
 *
 * @param log      日志内容
 * @param duration 持续时间,纳秒
 * @param property 附加属性参数(可选)
 */
fun addLongTask(log: String, duration: Long, property: HashMap<String, Any>)

代码示例

// 场景 1
FTRUMGlobalManager.get().addLongTask("error log", 1000000L);

// 场景 2: 动态参数
HashMap<String, Object> map = new HashMap<>();
map.put("ft_key", "ft_value");
FTRUMGlobalManager.get().addLongTask("", 1000000L, map);
// 场景 1
FTRUMGlobalManager.get().addLongTask("error log", 1000000L)

// 场景 2: 动态参数
val map = HashMap<String, Any>()
map["ft_key"] = "ft_value"
FTRUMGlobalManager.get().addLongTask("", 1000000L, map)

Resource

使用方法

/**
 * resource 起始
 *
 * @param resourceId 资源 Id
 * @param property   附加属性参数(可选)
 */
public void startResource(String resourceId, HashMap<String, Object> property)

/**
 * resource 终止
 *
 * @param resourceId 资源 Id
 * @param property   附加属性参数(可选)
 */
public void stopResource(final String resourceId, HashMap<String, Object> property)

/**
 * 设置网络传输内容
 *
 * @param resourceId resourceId
 * @param params params
 * @param netStatusBean netStatusBean
 */
public void addResource(String resourceId, ResourceParams params, NetStatusBean netStatusBean)
/**
 * resource 起始
 *
 * @param resourceId 资源 Id(可选)
 */
fun startResource(resourceId: String, property: HashMap<String, Any>)

/**
 * resource 终止
 *
 * @param resourceId 资源 Id
 * @param property   附加属性参数(可选)
 */
fun stopResource(resourceId: String, property: HashMap<String, Any>)

/**
 * 设置网络传输内容
 *
 * @param resourceId resourceId
 * @param params params
 * @param netStatusBean netStatusBean
 */
fun addResource(resourceId: String, params: ResourceParams, netStatusBean: NetStatusBean)

代码示例

// 场景 1
// 请求开始
FTRUMGlobalManager.get().startResource("resourceId");

// ...

// 请求结束
FTRUMGlobalManager.get().stopResource("resourceId");

// 最后,在请求结束之后,发送请求相关的数据指标
ResourceParams params = new ResourceParams();
params.setUrl("https://guance.com");
params.setResponseContentType(response.header("Content-Type"));
params.setResponseConnection(response.header("Connection"));
params.setResponseContentEncoding(response.header("Content-Encoding"));
params.setResponseHeader(response.headers().toString());
params.setRequestHeader(request.headers().toString());
params.setResourceStatus(response.code());
params.setResourceMethod(request.method());

NetStatusBean bean = new NetStatusBean();
bean.setTcpStartTime(60000000);
// ...

FTRUMGlobalManager.get().addResource("resourceId", params, bean);

// 场景 2 :动态参数使用
HashMap<String, Object> map = new HashMap<>();
map.put("ft_key", "ft_value");
map.put("ft_key_will_change", "ft_value");

FTRUMGlobalManager.get().startResource("resourceId", map);

// ...
HashMap<String, Object> map = new HashMap<>();
map.put("ft_key_will_change", "ft_value_change"); // ft_key_will_change 这个数值,会在 stopResource 时候被修改为 ft_value_change
FTRUMGlobalManager.get().stopResource(uuid, map);
// 场景 1
// 请求开始
FTRUMGlobalManager.get().startResource("resourceId")

// 请求结束
FTRUMGlobalManager.get().stopResource("resourceId")

// 最后,在请求结束之后,发送请求相关的数据指标
val params = ResourceParams()
params.url = "https://guance.com"
params.responseContentType = response.header("Content-Type")
params.responseConnection = response.header("Connection")
params.responseContentEncoding = response.header("Content-Encoding")
params.responseHeader = response.headers.toString()
params.requestHeader = request.headers.toString()
params.resourceStatus = response.code
params.resourceMethod = request.method

val bean = NetStatusBean()
bean.tcpStartTime = 60000000
// ...
FTRUMGlobalManager.get().addResource("resourceId", params, bean)

// 场景 2 :动态参数使用
val map = hashMapOf<String, Any>(
    "ft_key" to "ft_value",
    "ft_key_will_change" to "ft_value"
)
FTRUMGlobalManager.get().startResource("resourceId", map)

// ...
val map = hashMapOf<String, Any>(
    "ft_key_will_change" to "ft_value_change"
)
// ft_key_will_change 这个数值,会在 stopResource 时候被修改为 ft_value_change

FTRUMGlobalManager.get().stopResource(uuid, map)
方法名 必须 含义 说明
NetStatusBean.fetchStartTime 否 请求开始时间
NetStatusBean.tcpStartTime 否 TCP 连接时间
NetStatusBean.tcpEndTime 否 TCP 结束时间
NetStatusBean.dnsStartTime 否 DNS 开始时间
NetStatusBean.dnsEndTime 否 DNS 结束时间
NetStatusBean.responseStartTime 否 响应开始时间
NetStatusBean.responseEndTime 否 响应结束时间
NetStatusBean.sslStartTime 否 SSL 开始时间
NetStatusBean.sslEndTime 否 SSL 结束时间
NetStatusBean.property 否 附加属性
ResourceParams.url 是 URL 地址
ResourceParams.requestHeader 否 请求头参数
ResourceParams.responseHeader 否 响应头参数
ResourceParams.responseConnection 否 响应 connection
ResourceParams.responseContentType 否 响应 ContentType
ResourceParams.responseContentEncoding 否 响应 ContentEncoding
ResourceParams.resourceMethod 否 请求方法 GET, POST 等
ResourceParams.responseBody 否 返回 body 内容
ResourceParams.property 否 附加属性

Resource 自动采集

自动采集网络请求需要接入 ft-plugin,并在 RUM 初始化时开启 setEnableTraceUserResource(true)。Resource URL 过滤和 RUM 采样规则对以下采集方式均生效。

OkHttp

开启 setEnableTraceUserResource(true) 后,SDK 自动采集经插件插桩的 OkHttp HTTP/HTTPS 请求,无需修改请求代码。请在创建 OkHttpClient 前完成 SDK 初始化。

未使用插件时,可按 手动接入 OkHttp Resource / Trace 配置。

HttpURLConnection / HttpsURLConnection

要求 ft-sdk >= 1.7.6-alpha03 和 ft-plugin >= 1.3.9-alpha01。在创建连接前,同时开启以下两个开关:

FTSdk.initRUMWithConfig(new FTRUMConfig()
    .setRumAppId(RUM_APP_ID)
    .setEnableTraceUserResource(true)
    .setEnableHttpURLConnectionResource(true));
FTSdk.initRUMWithConfig(
    FTRUMConfig()
        .setRumAppId(RUM_APP_ID)
        .setEnableTraceUserResource(true)
        .setEnableHttpURLConnectionResource(true)
)
  • 采集范围:经插件插桩的 URL.openConnection() 和 openConnection(Proxy) HTTP/HTTPS 请求。插件选项 instrumentHttpURLConnection 默认开启;反射、系统内部或被排除插桩的调用不采集。
  • 采集数据:URL、方法、请求头、响应头、状态码、实际读写字节数和总耗时,不采集正文、DNS/TCP/TLS 分阶段耗时或目标 IP。总耗时包含应用读取响应流的时间,未读完响应时字节数可能小于完整响应大小。
  • 使用注意:正常读取并关闭响应流,请求结束后调用 disconnect()。建议过滤 SSE 等长连接请求;与其他采集层同时使用时,避免重复上报。
  • 关联能力:Trace Header 注入和 RUM 链路关联需另行配置,见 URLConnection Trace;不支持 Visitor ID Header 注入。

WebSocket 握手 Resource

要求 ft-sdk >= 1.7.5 和 ft-plugin >= 1.3.8。开启 setEnableTraceUserResource(true) 后,自动采集 OkHttp newWebSocket() 的握手请求,无需额外开关。

每次握手生成一条 Resource,记录成功、拒绝或失败状态;不统计连接存续时间,也不采集消息内容。未使用支持自动采集的插件时,可通过 FTWebSocket 手动接入。

文档评价

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