Skip to content

配置插件

插件配置可以在SDK侧配置是否开启和关闭这些插件。插件配置属于一次性配置,初始化后修改不能生效。

关闭插件

SDK支持关闭任意插件。如果您要关闭某个插件,将对应的pluginName配置为false。

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    [pluginName]: false // 具体的pluginName可以查看各个插件的配置示例
  },
  ...
})


// 关闭插件示例: 关闭性能插件
browserClient('init', {
  ...
  plugins: {
    performance: false // 具体的pluginName可以查看各个插件的配置示例
  },
  ...
})

配置插件

除了白屏监控,所有插件都有默认配置,默认不需要额外配置。具体默认参数可见下文详细说明,如果有与默认配置不同的地方,可以单独配置。

PV插件

可配置字段说明

字段类型默认值说明
sendInitbooleanTRUE页面首次加载时,是否发送PV。如果业务手动发送PV,则可以设置为false。
routeModestringhistory选择自动监控路由的模式,手动指定当前站点的路由模式。history:监控path变化,hash:监控hash变化,manual:不自动监控路由变化
extractPid(url: string) => string-手动指定pid的生成规则,传入当前页面地址。返回值作为pid。默认情况下,pid是自动获取当前页面url的pathname或者hash。如果自动生成的pid过去分散,不利于分析数据,可以配置这个函数,达到手动聚合的效果。

配置示例

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    pageview: {
      routeMode: 'hash',
      extractPid: (url) => {
        return new URL(url).pathname
      }
    }
  },
  ...
})

JS错误插件

可配置字段说明

字段类型默认值说明
ignoreErrors(string | RegExp)[][]与error message匹配,忽略能匹配的JS错误。
onerrorbooleantrue是否开启全局onerror监听。如果业务本身是三方组件或者SDK,可以设置为false,表示不开启全局onerror监听,此时需要使用captureException手动上报JS错误。
onunhandledrejectionbooleantrue是否开启全局onunhandledrejetion监听。如果业务本身是三方组件或者SDK,可以设置为false,表示不开启全局onunhandlerejection监听,此时需要使用captureException手动上报JS错误。
captureGlobalAsyncbooleanfalse是否hook全局异步API。异常API内的错误,比如setTimeout,因为自身限制抛到全局后往往没有完整堆栈,如果将此字段设置为true,那么可以获得更多信息,例如错误是从哪个API被抛出的。
dedupebooleantrue当前发生的JS错误会和上一个错误比较,如果是同一个错误,是否不再上报。为了避免循环上报,默认开启了去重。如果业务场景希望相同的错误能够重复上报,需要将此字段设置为false。

配置示例

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    jsError: {
      ignoreErrors: ['Failed to fetch']
    }
  },
  ...
})

面包屑插件

面包屑插件并不是一个独立的功能插件,而是JS错误插件的附属插件,该插件能够给JS错误提供更多的用户相关的行为上下文。

可配置字段说明

字段类型默认值说明
maxBreadcrumbsnumber20内存里最多能记录多少条面包屑。如果业务场景希望能够看到JS错误发生前更早的用户行为,可以将maxBreadcrumbs的取值设置的大一点。
dombooleantrue是否监听click和keypress事件。目前SDK只采集了xpath数据,如果业务对用户隐私仍有安全考虑,可以将dom配置为false,这样就不会采集用户行为。
onAddBreadcrumb(b: Breadcrumb) => Breadcrumb-添加面包屑的钩子函数。常用于部分脱敏场景,或者补充更多上下文。
onMaxBreadcrumb(bs: Breadcrumb[], maxBreadcrumbs: number) => Breadcrumb[]-面包屑队列达到长度限制的钩子函数。常用于一次性处理队列里的面包屑。

类型说明

ts
interface Breadcrumb {
  /** dom | http | any string */
  type: string;
  /** xpath, keyvalue | url */
  message: string;
  /** ui.click, ui.keypress | post,get */
  category: string;
  /** status: 400 for http */
  data?: { [key: string]: string };
}

配置示例

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    breadcrumb: {
      dom: false,
      maxBreadcrumbs: 50,
      onAddBreadcrumb: (b) => {
        return {
          ...b,
          data: null // 置空敏感数据
        }
      }
    }
  },
  ...
})

静态资源性能插件

可配置字段说明

字段类型默认值说明
ignoreUrls(string | RegExp)[][]指定忽略的资源路径。如果匹配上,则不会上报对应的资源性能数据。
slowSessionThresholdnumber4000慢会话阈值,单位ms。如果会话在阈值时间内加载完毕,那么即使配置了采样率,当前会话的静态资源性能数据也会全部上报,便于更好的排查页面性能异常。
ignoreTypesstring[][]指定忽略的资源类型,对应匹配的字段为PerformanceResourceTiming.initiatorType,详情请参见PerformanceResourceTiming.initiatorType。

配置示例

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    resource: {
      ignoreTypes: ['css'],
    }
  },
  ...
})

静态资源错误插件

可配置字段说明

字段类型默认值说明
ignoreUrls(string | RegExp)[][]指定忽略的资源路径。如果匹配上,则不会上报对应的静态资源错误。
includeUrls(string | RegExp)[][]指定命中的资源路径。如果没匹配上,则不会上报对应的静态资源错误。优先级高于ignoreUrls。
dedupebooleantrue当前发生的资源错误会和上一个资源错误比较,如果是同一个错误,是否不再上报。为了避免循环上报,默认开启了去重。如果业务场景希望相同的资源错误能够重复上报,需要将此字段设置为false。

配置示例

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    resourceError: {
      dedupe: false,
    }
  },
  ...
})

XHR监控插件

可配置字段说明

字段类型默认值说明
autoWrapbooleantrue是否自动包装全局的xhr。如果业务使用的不是全局的xhr,而是自己包装的xhr,需要将此字段设置为false,同时调用wrapXhr方法手动包装xhr。
ignoreUrls(string | RegExp)[][]指定忽略的请求路径,如果匹配上,则不会上报对应的请求数据。
collectBodyOnErrorbooleanfalse错误时是否采集request body和response body。默认情况下,SDK不会采集request body和response body。如果业务需要错误时采集这些数据便于更好的排查问题,需要将此字段设置为true。
trace{ sampleRate?: number, origins: (string | RegExp)[] } | booleanfalse配置前后端打通,如果请求路径命中配置的origins,则会在请求头里补充x-rum-traceparent头,便于服务端监控串联整个链路,帮助排查请求耗时长的原因,具体定位请求性能瓶颈。

配置示例

ts
import  browserClient  from  '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    ajax: {
      autoWrap: false,
      collectBodyOnError: true,
    }
  },
  ...
})

Fetch监控插件

可配置字段说明

字段类型默认值说明
autoWrapbooleantrue是否自动包装全局的fetch。如果业务使用的不是全局的fetch,而是自己包装的fetch,需要将此字段设置为false,同时调用wrapFetch方法手动包装fetch。
ignoreUrls(string | RegExp)[][]指定忽略的请求路径,如果匹配上,则不会上报对应的请求数据。
collectBodyOnErrorbooleanfalse错误时是否采集request body。默认情况下,SDK不会采集request body和response body。如果业务需要错误时采集这些数据便于更好的排查问题,需要将此字段设置为true。
trace{ sampleRate?: number, origins: (string | RegExp)[] } | booleanfalse配置前后端打通,如果请求路径命中配置的origins,则会在请求头里补充x-rum-traceparent头,便于服务端监控串联整个链路,帮助排查请求耗时长的原因,具体定位请求性能瓶颈。

配置示例

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    fetch: {
      autoWrap: false,
      collectBodyOnError: true,
    }
  },
  ...
})

性能监控相关插件

性能监控插件不是一个插件,而是由多个插件组成,配置也比较简单,主要是提供各个性能指标的开关。常规的使用场景是,在关闭某个指标后,使用SDK提供的sendCustomPerfMetric方法手动上报该性能指标。

Performance可配置字段说明

字段类型默认值说明
fpbooleantruefp指标开关,常用于不上报对应指标。
fcpbooleantruefcp指标开关,常用于不上报对应指标。
fidbooleantruefid指标开关,常用于不上报对应指标。
mpfidbooleantruempfid指标开关,常用于不上报对应指标。
lcpbooleantruelcp指标开关,常用于不上报对应指标。
clsbooleantruecls指标开关,常用于不上报对应指标。
longtaskbooleantruelongtask指标开关,常用于不上报对应指标。
timingbooleantruetiming指标开关,常用于不上报对应指标。

Performance配置示例

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    performance: {
      fp: false,
    }
  },
  ...
})

FMP可配置字段说明

字段类型默认值说明
renderTypestringCSR指定当前页面的渲染类型。CSR:以默认算法计算FMP。SSR:不以默认算法计算FMP,而是使用FCP代替FMP。

FMP配置示例

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    fmp: {
      renderType: 'SSR',
    }
  },
  ...
})

TTI插件

由于TTI的算法依赖请求,启动时机较早,所以独立为一个插件,并未开放配置项,但是可以配置为false,关闭此指标的计算。

ts
import browserClient  from '@owl-js/web'

browserClient('init', {
  ...
  plugins: {
    tti: false
  },
  ...
})

白屏插件

白屏插件是默认不开启,需要您手动配置才会开启。插件中包含的截图能力是基于html2canvas二次开发的,额外增加了隐藏具体文本信息的开关能力。

可配置字段说明

字段类型默认值说明
rootSelectorstringbodydom打分的根节点,支持querySelector语法。手动配置rootSelector为打分的根节点,准确定才更高。如果只想监控某个区域是否白屏,也可以配置为指定的区域节点。
autoDetectbooleantrue是否自动开启白屏监测。如果不想开启自动监测,希望能够手动监测,可以将此字段设置为false,然后调用SDK提供的detectBlankScreen方法手动监测是否白屏。
thresholdnumber1.5dom打分的阈值。如果计算出来的分数小于阈值,则认为可能是白屏。
screenshotbooleantrue是否自动上报当前页面的截屏图片。截屏一定程度上涉及安全隐私,但是能够帮助判定当前页面是否真的白屏。说明,如果高度和宽度为0或者超过maximum canvas size,截屏图片base64会返回"data:,"。maximum canvas size相关内容,具体请参见Maximum canvas size。
maskbooleanfalse对以下节点的内容进行数据脱敏:Text、input、Svg、Img、canvas。
partialShotbooleanfalse部分节点截图。白屏时默认截屏为document.body,启动该字段后则只截屏传入的rootSelector。
qualitynumber0.1截屏图片清晰度,取值范围:0 ~ 1。如果您想获取更清晰的截屏信息,可以提高该字段取值。说明,由于1:1截屏转码后的base64过大,默认已对原页面进行缩小。缩放公式:360 / window.innerWidth。更多关于截屏图片的清晰度,请参见Syntax。

Released under the MIT License.