全部产品
Search
文档中心

应用实时监控服务ARMS:SDK 配置参考

更新时间:May 21, 2026

本文档介绍 ARMS 前端监控 Electron SDK 的全部配置项与 API。通过 armsRum.init() 传入配置对象即可完成 SDK 初始化。

SDK 配置(基础配置)

参数

类型

描述

是否必填

默认值

endpoint

string

数据上报地址

-

enable

boolean

是否启用 SDK

true

env

‘prod’ | ‘gray’ | ‘pre’ | ‘daily’ | ‘local’ | string

应用环境标识

-

version

string

应用版本号

-

endpoint 为必填项,为完整的上报地址 URL。可在 ARMS 控制台「用户体验监控 > 应用列表」中创建应用后获取。

import armsRum from '@arms/rum-electron';

armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'enable: true,
  env: 'prod',
  version: '1.0.0',
});

app 配置

app 对象用于描述应用的扩展信息,便于在 ARMS 控制台中按维度筛选与聚合。

参数

类型

描述

是否必填

默认值

app

object

应用扩展信息

-

app.name

string

应用名称

-

app.version

string

应用版本

-

app.channel

string

发布渠道

-

app.env

string

应用环境

-

app.type

string

应用类型

-

app.package

string

包名

-

app.framework

string

技术框架

-

armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'app: {
    name: 'MyElectronApp',
    version: '2.1.0',
    channel: 'stable',
    env: 'prod',
    type: 'electron',
    package: 'com.example.my-app',
    framework: 'react',
  },
});

user 配置

user 对象用于标识当前用户,便于在 ARMS 控制台中按用户维度排查问题。

参数

类型

描述

是否必填

默认值

user

object

用户信息对象

-

user.name

string

用户名称

-

user.tags

string

用户标签

-

armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'user: {
    name: '张三',
    tags: 'vip,enterprise',
  },
});

sessionConfig 配置

sessionConfig 控制会话(Session)的采样与生命周期策略。

参数

类型

描述

是否必填

默认值

sampleRate

number

会话采样率(0~1)

1

maxDuration

number

会话最大持续时间(毫秒)

-

overtime

number

会话超时时间(毫秒)

-

 sampleRate 取值范围为 0~1,1 表示 100% 采集,0.1 表示 10% 采样。降低采样率可减少上报量与费用。

armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'sessionConfig: {
    sampleRate: 1,
    maxDuration: 4 * 60 * 60 * 1000,  // 会话最长 4 小时overtime: 30 * 60 * 1000,          // 30 分钟无活动则超时
  },
});

collectors 配置(主进程采集器)

collectors 控制主进程中各采集器的启用/禁用。每个采集器支持传入 boolean 或 ICollectorConfig 对象进行细粒度配置。

参数

类型

描述

是否必填

默认值

jsError

boolean | ICollectorConfig

未捕获异常与 Promise 拒绝

true

consoleError

boolean | ICollectorConfig

console.error 拦截上报

true

crash

boolean | ICollectorConfig

原生崩溃采集

true

api

boolean | ICollectorConfig

API 请求监控

true

application

boolean | ICollectorConfig

应用启动指标

true

crash 采集器通过 Electron 的 crashReporter 机制捕获原生崩溃(主进程/渲染进程 Crash),并支持通过 WASM 解析 minidump 文件。

armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'collectors: {
    jsError: true,
    consoleError: false,
    crash: true,
    api: {
      enable: true,
      // 可在 ICollectorConfig 中进一步配置过滤器等
    },
    application: true,
  },
});

browserCollectors 配置(渲染进程采集器)

说明

仅在 autoInject: true 模式下生效。当 autoInject 为 false 时,渲染进程采集器需在 Browser SDK 侧单独配置。

browserCollectors 控制自动注入到渲染进程的 Browser SDK 中的采集器。每个采集器支持传入 boolean 或 ICollectorConfig 对象。

参数

类型

描述

是否必填

默认值

perf

boolean | ICollectorConfig

页面加载性能指标

true

webvitals

boolean | ICollectorConfig

Web Vitals 核心指标(LCP、FID、CLS)

true

exception

boolean | ICollectorConfig

未捕获异常与 Promise 拒绝

true

whiteScreen

boolean | ICollectorConfig

白屏检测

true

api

boolean | ICollectorConfig

HTTP 请求监控(XHR/Fetch)

true

staticResource

boolean | ICollectorConfig

静态资源加载监控

true

click

boolean | ICollectorConfig

用户点击事件

true

longTask

boolean | ICollectorConfig

长任务检测(>50ms)

true

armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'autoInject: true,
  browserCollectors: {
    perf: true,
    webvitals: true,
    exception: true,
    whiteScreen: true,
    api: true,
    staticResource: true,
    click: false,       // 关闭点击事件采集longTask: true,
  },
});

tracing 配置

tracing 控制分布式链路追踪(Tracing)的启用与策略。支持传入 boolean 快速开关,或传入 ITracingOption 对象进行详细配置。

参数

类型

描述

是否必填

默认值

enable

boolean

是否启用链路追踪

false

sample

number

采样率(0~1)

-

propagatorTypes

Array<string>

传播协议类型,支持 tracecontext / b3 / b3multi / jaeger / sw8

-

allowedUrls

Array<MatchOption | TraceOption>

允许注入追踪头的 URL 规则

-

tracestate

boolean

是否携带 tracestate

false

baggage

boolean

是否携带 baggage

false

 propagatorTypes 支持多种传播协议,可根据后端服务使用的链路追踪体系选择对应的协议。allowedUrls 支持字符串或正则匹配,仅匹配的请求才会注入追踪头。

armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'tracing: {
    enable: true,
    sample: 0.5,
    propagatorTypes: ['tracecontext', 'b3'],
    allowedUrls: [
      'https://api.example.com',
      /\/api\/v\d+\//,
    ],
    tracestate: true,
    baggage: false,
  },
});

其他配置

参数

类型

描述

是否必填

默认值

autoInject

boolean

是否自动注入 Browser SDK 到所有 BrowserWindow

true

partition

string

自定义 session partition

-

spaMode

boolean | ‘auto’ | ‘hash’ | ‘history’

SPA 路由追踪模式

false

evaluateApi

Function

自定义 API 请求解析回调

-

parseViewName

Function

自定义页面名称解析函数

-

beforeReport

Function

上报前回调,可修改或丢弃数据

-

properties

Record<string, number | string>

全局自定义属性

-

重要

autoInject 默认为 true,SDK 会自动将 Browser SDK 注入到所有 BrowserWindow 的渲染进程中。若设置为 false,则需在渲染进程中手动引入并初始化 Browser SDK:

// 渲染进程中手动初始化
import armsRum from '@arms/rum-electron/browser';
armsRum.init({ endpoint: '<YOUR-ENDPOINT>' });
armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'autoInject: true,
  partition: 'persist:main',
  spaMode: 'hash',
  parseViewName: (url: string) => {
    // 自定义页面名称解析逻辑const match = url.match(/\/app\/([^/?#]+)/);
    return match ? match[1] : url;
  },
  beforeReport: (bundle: any) => {
    // 返回修改后的数据继续上报,返回 null/undefined 则丢弃该条数据console.log('beforeReport', bundle);
    return bundle;
  },
  properties: {
    department: 'engineering',
    region: 'cn-hangzhou',
  },
});
  • partition 用于指定自定义 Electron session partition。当你的 BrowserWindow 使用了 partition 配置时,需要在此处指定相同的值,以确保 preload 脚本正确注册到对应的 session。

  • spaMode 取值含义如下:

    • false:禁用 SPA 路由追踪(默认行为,仅追踪完整页面加载)

    • true / 'auto':自动检测,优先 hash 后 pathname

    • 'hash':Hash 路由模式(如 React HashRouter)

    • 'history':History API 路由模式(如 React BrowserRouter)

SDK API

armsRum.init(config)

初始化 SDK,必须在 app.ready 之前调用。

init(config: IElectronConfig): Promise<ArmsRum>

 init() 必须在 Electron app.ready 事件之前调用,因为 SDK 需要在 ready 之前注册自定义协议(rum-event://)以支持降级上报通道。

import { app } from 'electron';
import armsRum from '@arms/rum-electron';

//在 app.ready 之前调用 init
armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'env: 'prod',
  version: '1.0.0',
});

app.whenReady().then(() => {
  // 创建 BrowserWindow 等
});

armsRum.getConfig()

获取当前 SDK 配置。

getConfig(): IElectronConfig
const config = armsRum.getConfig();
console.log('当前配置:', config.endpoint, config.env);

armsRum.setConfig()

动态修改 SDK 配置,支持两种调用方式。

// 方式一:按键值对修改单个配置项
setConfig<T extends keyof IElectronConfig>(key: T, value: IElectronConfig[T]): void

// 方式二:传入配置对象批量修改
setConfig(config: Partial<IElectronConfig>): void
// 修改单个配置项
armsRum.setConfig('enable', false);
armsRum.setConfig('env', 'daily');

// 批量修改配置const config = armsRum.getConfig();
armsRum.setConfig({
  ...config,
  enable: true,
  env: 'prod',
  version: '2.0.0',
});

armsRum.registerSession(partition)

为使用自定义 partition 的 BrowserWindow 注册 RUM preload 脚本。在 init() 之后调用,建议在创建对应 BrowserWindow 之前调用,以确保首次页面加载即生效。

registerSession(partition: string): Promise<ArmsRum>

当 BrowserWindow 使用了自定义 partition(如 persist:main)时,需要调用此方法为该 session 注册 preload 脚本。若在 init() 中已通过 partition 配置指定了默认 partition,则无需再调用此方法。

import armsRum from '@arms/rum-electron';
import { BrowserWindow } from 'electron';

armsRum.init({
  endpoint: '<YOUR-ENDPOINT>'
}).then(() => {
  // 为自定义 partition 注册 preload
  armsRum.registerSession('persist:main');
});

// 之后创建使用该 partition 的窗口
const win = new BrowserWindow({
  webPreferences: {
    partition: 'persist:main',
    // ...
  },
});