SDK配置参考

更新时间:2024-10-25 09:36:44

ARMS用户体验监控提供一系列SDK配置项,让您能够通过设置参数来满足额外需求。本文介绍Web & H5应用常用的SDK配置。

SDK 配置

参数

类型

描述

是否必填

默认值

参数

类型

描述

是否必填

默认值

pid

string

应用ID

-

endpoint

string

上报地址

-

env

string

应用环境:

  • prod:线上环境

  • gray:灰度环境

  • pre:预发环境

  • daily:日常环境

  • local:本地环境

prod

version

string

应用版本

-

user

object

User配置

user.idSDK默认生成

spaMode

string

SPA模式,监听页面事件并重新上报PV,适用于单页面应用场景。

  • hash

  • history

  • auto

  • false

false

beforeReport

function

Repoter发送RUM事件之前

-

reportConfig

object

上报配置,详细说明请参见reportConfig 配置

-

sessionConfig

object

Session的采样、存储等配置,详细说明请参见sessionConfig 配置

-

collectors

object

Collector(采集器)配置

-

parseViewName

function

解析视图名称(view.name),入参为当前页面的URL。

-

parseResourceName

function

解析资源名称(resource.name),入参为当前资源的URL。

-

evaluateApi

function

自定义解析API事件,详细说明请参见 evaluateApi 配置

-

filters

object

事件过滤配置,详情说明请参见 filters 配置

-

whiteScreen

object

白屏监控配置,详细说明请参见 whiteScreen 配置

-

properties

object

自定义属性,可对所有事件生效,详情说明请参见 properties 配置

-

使用CDN加载情况下,访问 SDK 监控实例,请使用全局命名空间 RumSDK.default。

const ArmsRum = window.RumSDK.default;
// 访问 RumSDK 需确保SDK已经完成加载
// 如果SDK加载前没有定义 __rum 配置,可在此初始化
ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpoint",
});
// 以下继续使用,NPM 和 CDN 一致
ArmsRum.setConfig('env', 'pre');

user 配置

参数

类型

描述

是否必填

默认值

参数

类型

描述

是否必填

默认值

id

string

用户ID,不可修改。

SDK默认生成

tags

string

标签

-

name

string

名称

-

示例

说明

如果需要关联业务自有账号体系,建议使用user.name或者user.tags ,而不是修改user.id。强制覆盖SDK生成的user.id ,会影响UV的计算。

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpoint",
  user: {
    name: 'your user.name',
    tags: 'your user.tags',
  },
});

reportConfig 配置

参数

类型

描述

是否必填

默认值

参数

类型

描述

是否必填

默认值

flushTime

number

上报时间间隔

取值范围:[0, 10000]

3000

maxEventCount

number

一次上报最大数量

取值范围:[1, 100]

20

示例

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpint",
  reportConfig: {
    flushTime: 0, // 立即上报
    maxEventCount: 50, // 一次最多上报数量
  },
});

sessionConfig 配置

参数

类型

描述

是否必填

默认值

参数

类型

描述

是否必填

默认值

sampleRate

number

Session采样率:[0, 1]

50%采样率就是0.5。

1

maxDuration

number(ms)

Session最大持续时间,默认24小时。

86400000

overtime

number(ms)

Session超时时间,默认一小时。

3600000

storage

string

Session相关的数据存储位置。

  • cookie

  • localStorage

localStorage

Storage存储了user.idsession信息 :

  • _arms_uid:唯一标识用户ID,对应user.id。

  • _arms_session:具备语义化的Session信息。

    • sessionId:Session唯一标识。

    • sampled:是否命中采样。

    • startTime:Session的开始时间戳。

    • lastTime:Session最后一次活跃时间戳。

`${sessionId}-${sampled}-${startTime}-${lastTime}`

示例

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpint",
  sessionConfig: {
    sampleRate: 0.5, // 采样率50%
    maxDuration: 86400000,
    overtime: 3600000,
    storage: 'cookie',
  },
});

collectors 配置

CollectorRUM SDK用于收集页面监控数据的最小单元。目前RUM SDK内置了API、static Resource等丰富的采集器。

参数

类型

描述

是否必填

默认值

参数

类型

描述

是否必填

默认值

perf

boolean | object

监听页面的性能数据。

true

webvitals

boolean | object

监听页面的WebVitals数据。

true

api

boolean | object

监听API请求。

true

staticResource

boolean | object

监听静态资源请求。

true

consoleError

boolean | object

监听Console错误。

true

jsError

boolean | object

监听JS错误。

true

action

boolean | object

监听用户行为。

true

示例

关闭监听用户Click行为。

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpoint",
  collectors: {
    action: false,
  },
});

evaluateApi 配置

evaluateApi提供对API(XMLHttpRequest/fetch)事件的自定义解析。以下为SDK传入的三个参数:

参数

类型

描述

参数

类型

描述

options

object

请求参数,包括url、headers、data等,根据具体请求方式有所差异。

response

object

请求响应体。

error

Error

可选参数,当请求失败才会传入。

该函数支持异步函数,返回Promise<IApiBaseAttr>,IApiBaseAttr的定义如下:

参数

类型

描述

是否必填

参数

类型

描述

是否必填

name

string

API名称,一般是对URL的收敛,最大1000字符。

例如URL/list/123, 收敛name字段后显示为/list/$id

重要

该字段的优先级高于parseResourceName返回的内容。

message

string

API信息,一个简短的描述API概况字符串,最大1000字符。

success

number

请求成功状态:

  • 1:成功

  • 0:失败

  • -1:未知

duration

number

API总耗时。

status_code

number | string

API状态码。

snapshots

string

API快照。

说明

可用于存储reqHeaders、params、resHeaders等,具体字段组成方式可自行决定。该字段主要用于排查接口异常的原因,没有索引,不能根据该字段进行筛选或聚合,只接受字符串类型,最大5000字符。

示例

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpint",
  evaluateApi: async (options, response, error) => {
    let respText = '';
    // 当前为使用fetch请求的情况
    if (response && response.text) {
      respText = await response.text();
    }
    // 返回的字段会覆盖默认内容,不返回的字段会依然使用SDK自定生成内容
    return {
      name: 'my-custom-api',
      success: error ? 0 : 1,
      // 以下可选
      snapshots: JSON.stringify({
        params: 'page=1&size=10', // 请求入参
        response: respText.substring(0, 2000), // 返回值
        reqHeaders: '', // 请求头
        resHeaders: '', // 响应头
      }),
      properties: {
        prop_msg: 'custom msg',
        prop_num: 1,
      },
    };
  },
});

filters 配置

filters 用于过滤无需上报的事件,目前支持 resource 和 exception 两种事件。

参数

类型

描述

是否必填

参数

类型

描述

是否必填

resource

MatchOption | MatchOption[]

对采集到的资源事件进行过滤,包括静态资源和API(XMLHttpRequest/fetch)。

exception

MatchOption | MatchOption[]

对采集到的异常事件进行过滤。

MatchOption

type MatchOption = string | RegExp | ((value: string) => boolean);
  • string:匹配任何以该值开头的URL,如https://api.aliyun.com可以匹配https://api.aliyun.com/v1/resource

  • RegExp:使用提供的RegExpURL执行test。

  • function:以URL作为参数进行计算,返回true表示匹配。

当传入为 MatchOption[] 时,条件顺序执行,有一项满足就会被过滤。

示例

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpoint",
  filters: {
    // 过滤异常
    exception: [
      'Test error', // 以'Test error'开头的error.message
      /^Script error\.?$/, // 正则表达式匹配 error.message
      (msg) => {
        return msg.includes('example-error');
      },
    ],
    // 过滤资源或API
    resource: [
      'https://example.com/', // 以'https://example.com/'开头的resource
      /localhost/i,
      (url) => {
        return url.includes('example-resource');
      },
    ],
  },
});

whiteScreen 配置

白屏监控仅支持浏览器端(Chrome 40+,IE 9+)。

参数

类型

描述

参数

类型

描述

detectionRules

Array<DetectionRule>

包含一个或多个白屏检测规则,按配置顺序和延时大小触发检测。

DetectionRule

参数

类型

是否必填

描述

默认值

参数

类型

是否必填

描述

默认值

target

String

指定白屏检测的目标元素的选择器。当检测触发时,系统将对匹配此选择器的元素区域进行白屏检测。

test_when

Array

列出触发白屏检测的事件,检测将在这些事件发生后启动,可选值:

  • LOAD:页面加载完成。

  • ERROR:发生全局JavaScript错误。

  • ROUTE_CHANGE:路由变化(包括hashhistory)。

  • LEAVE:关闭页面前。

delay

Number

配合test_when使用。在指定事件(不包括ERRORLEAVE)发生后,等待指定时间后开始白屏检测。(单位:毫秒)。

0

tester

String | Function

定义使用的白屏检测方法。

  • HAS_CONTENT:内置检测方法,判断目标节点内是否含有 textContent。

  • SAMPLE:内置检测方法,通过设置采样点,判断采样点位置最顶层的DOM元素是否包含在给定的元素集合中,以计算白屏率。

  • SCREENSHOT:内置检测方法,通过canvas截图,基于像素比对计算白屏率。

  • 自定义检测函数:入参为目标元素,返回值类型为CustomTesterResultPromise<CustomTesterResult>,类型声明见表格下方。

ignoreUrlList

Array<String>

需要忽略检测的URL列表,当页面URL与列表中的任何一个匹配时,不进行白屏检测。

[]

configOptions

ConfigOptions

tester搭配使用,为所选tester提供具体的配置参数。

详见ConfigOptions的配置项说明。

CustomTestResult的类型声明:

type CustomTesterResult = {
  /**
   * 是否存在内容,如果为`true`则表示有内容,`false`表示发生白屏。
   */
  hasContent: boolean;

  /**
   * 错误信息
   */
  message?: string;

  /**
   * 异常的快照数据
   */
  snapshot?: Record<string, any>;
}

ConfigOptions

参数仅在关联方法中生效。

参数

类型

关联方法

描述

默认值

参数

类型

关联方法

描述

默认值

colorRange

Array<Srting>

SCREENSHOT

视为白屏的颜色集合,用于像素比对时判断当前像素区块是否为“全白”,格式为rgb(r, g, b)

['rgb(255, 255, 255)']

fillColor

String

SCREENSHOT

填充颜色。在截图时会对图片、视频、canvas、svg、iframe 等元素进行色块填充,填充色不能是colorRange里配置的任何一种颜色。

'rgba(0, 100, 200, 255)'

horizontalOffset

Number

SCREENSHOT

白屏检测区域左侧边缘相对于目标元素左侧边缘的水平偏移量,用于过滤目标元素的左侧菜单。

0

verticalOffset

Number

SCREENSHOT

白屏检测区域上边缘相对于目标元素上边缘的垂直偏移量,用于过滤目标元素的 topBar。

0

pixels

Number

SCREENSHOT

指定白屏检测时,采样像素区块的大小,区块的大小为pixels * pixels

10

threshold

Number

SCREENSHOT

SAMPLE

白屏率阈值,当白屏率大于该值时,认为发生白屏。

0.8

dpr

Number

SCREENSHOT

设置快照图片的缩放比例。

0.3

ignoreElements

Array<Srting>

SCREENSHOT

需要忽略检测的元素的 CSS 选择器,这些元素在截图时将被忽略。

[]

sampleMethod

1 | 2 | 3

SAMPLE

采样方法:

  • 1:十字采样

  • 2:交叉十字采样

  • 3:米字采样

2

checkPoints

Number

SAMPLE

设置径向的采样点数量。

  • 对于十字采样或交叉十字采样,总采样点数量为 4 * checkPoints + 1

  • 对于米字采样,总采样点数量为 8 * checkPoints + 1

10

whiteBoxElements

Array<Srting>

SAMPLE

白屏元素的 CSS 选择器列表,当采样点的顶层 DOM 元素匹配此列表中的选择器时,增加白屏计数。

[]

debug

Boolean

SCREENSHOT

SAMPLE

是否开启调试模式,在调试模式下可以在开发者工具里看到打印的检测信息。

false

示例

SCREENSHOT 截图检测法

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpint",
  whiteScreen: {
    detectionRules: [{
      target: '#root',
      test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
      delay: 5000,
      tester: 'SCREENSHOT',
      configOptions: {
        colorRange: ['rgb(255, 255, 255)', 'rgb(0, 0, 0)'],
        threshold: 0.9,
        pixels: 10,
        horizontalOffset: 210,
        verticalOffset: 50,
      },
    }],
  },
});

SAMPLE 采样法

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpint",
  whiteScreen: {
    detectionRules: [{
      target: '#root',
      test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
      delay: 5000,
      tester: 'SAMPLE',
      configOptions: {
        sampleMethod: 2,
        checkPoints: 10,
        threshold: 0.9,
        whiteBoxElements: ['.el-skeleton'],
      },
    }],
  },
});

CUSTOM 自定义检测函数

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpint",
  whiteScreen: {
    detectionRules: [{
      target: '#root',
      test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
      delay: 5000,
      tester: async (element) => {
        // 自定义检测函数主题
        return {
          hasContent: false,
          message: '自定义的错误信息',
          snapshot: {
            // 键值对可自定义
            checkPoints: 100,
            rate: 0.99,
            checkdata: '......',
          },
        };
      },
    }],
  },
});

properties 配置

PropertiesRUM提供的自定义属性,可为任何上报事件配置该属性。

参数

类型

描述

是否必填

参数

类型

描述

是否必填

[key: string]

string | number

  • key必须是符合JSON规范的字符串,key的最大长度为50字符,key超出部分会被截断。

  • valuestring时,最大长度为2000字符。value为非 string | number时,该键值对会被移除。

使用evaluateApi、sendCustom、sendException、sendResource等可以单独为某个事件增加properties,仅对单个事件生效。

全局properties和事件properties在存储时会进行合并。事件properties优先级高于全局properties,合并时相同的key,事件properties会覆盖全局properties。合并后properties键值对数量不可超过20对,超出会基于key进行排序后移除。

示例

全局配置properties时,所有上报的事件都会拥有。

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpoint",
  properties: {
    prop_string: 'xx',
    prop_number: 2,
    // key 和 value 超出范围会被截断
    more_than_50_key_limit_012345678901234567890123456789: 'yy',
    more_than_2000_value_limit: new Array(2003).join('1'),
    // 以下不符合要求的键值对会被移除
    prop_null: null,
    prop_undefined: undefined,
    prop_bool: true,
  },
});

其他配置

RUM SDK支持配置基于IPUserAgent等解析所得到的公共属性,主动配置字段优先级高于自动解析。

参数

类型

描述

是否必填

参数

类型

描述

是否必填

device

object

设备信息

os

object

系统、容器信息

geo

object

行政地理信息

isp

object

运营商信息

net

object

网络信息

以上字段具体可配置项请参考日志数据说明中公共属性部分。

示例

ArmsRum.init({
  pid: "your app id",
  endpoint: "your endpoint",
  geo: {
    country: 'your custom cuntry info',
    city: 'your custom city info',
  },
});

SDK API

RUM SDK开放API,用于修改上报自定义数据,动态修改SDK配置等。

getConfig

获取SDK配置。

setConfig

修改SDK配置。

// 指定 key 设置
ArmsRum.setConfig('env', 'pre');

// 覆盖设置
const config = ArmsRum.getConfig();
ArmsRum.setConfig({
  ...config,
  version: '1.0.0',
  env: 'pre',
});

sendCustom

上报自定义数据,必须包含typename两个属性,否则无法上报。属性的具体业务意义可参考下表,实际使用需要自行定义业务语义。

参数

类型

描述

是否必填

参数

类型

描述

是否必填

type

string

类型

name

string

名称

group

string

分组

value

number

properties

object

自定义属性

ArmsRum.sendCustom({
  // 必选
  type: 'CustomEvnetType1',
  name: 'customEventName2',
  // 可选
  group: 'customEventGroup3',
  value: 111.11,
  properties: {
    prop_msg: 'custom msg',
    prop_num: 1,
  },
});

sendException

上报自定义异常数据,必须包含namemessage两个属性,否则无法上报。

参数

类型

描述

是否必填

参数

类型

描述

是否必填

name

string

异常名称

message

string

异常信息

file

string

异常发生文件

stack

string

异常堆栈信息

line

number

异常发生的行数

column

number

异常发生的列数

properties

object

自定义属性

ArmsRUM.sendException({
  // 必选
  name: 'customErrorName',
  message: 'custom error message',
  // 可选
  file: 'custom exception filename',
  stack: 'custom exception error.stack',
  line: 1,
  column: 2,
  properties: {
    prop_msg: 'custom msg',
    prop_num: 1,
  },
});

sendResource

上报自定义资源,必须包含name、typeduration三个属性,否则无法上报。

参数

类型

描述

是否必填

参数

类型

描述

是否必填

name

string

资源名。

type

string

资源类型,例如:css、javascript、xmlhttprequest、fetch、api、image、font、other。

duration

string

请求耗时。

success

number

请求成功状态:

  • 1:成功

  • 0:失败

  • -1:未知

method

string

请求方法。

status_code

number | string

请求状态码。

message

string

请求消息。

url

string

请求地址。

trace_id

string

链路追踪ID。

properties

object

自定义属性。

ArmsRum.sendResource({
  // 以下必选
  name: 'getListByPage',
  message: 'success',
  duration: 800,
  // 以下可选
  url: 'https://www.aliyun.com/data/getListByPage',
  properties: {
    prop_msg: 'custom msg',
    prop_num: 1,
  },
});

  • 本页导读 (1)
  • SDK 配置
  • user 配置
  • 示例
  • reportConfig 配置
  • 示例
  • sessionConfig 配置
  • 示例
  • collectors 配置
  • 示例
  • evaluateApi 配置
  • 示例
  • filters 配置
  • MatchOption
  • 示例
  • whiteScreen 配置
  • DetectionRule
  • ConfigOptions
  • 示例
  • properties 配置
  • 示例
  • 其他配置
  • 示例
  • SDK API
  • getConfig
  • setConfig
  • sendCustom
  • sendException
  • sendResource
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等