全部產品
Search
文件中心

Application Real-Time Monitoring Service:SDK配置參考

更新時間:Oct 26, 2024

ARMS使用者體驗監控提供一系列SDK配置項,讓您能夠通過設定參數來滿足額外需求。本文介紹小程式應用常用的SDK配置。

SDK配置

參數

類型

描述

是否必填

預設值

pid

String

應用ID

-

endpoint

String

上報地址

-

env

-

應用環境:

  • prod:線上環境

  • gray:灰階環境

  • pre:預發環境

  • daily:日常環境

  • local:本地環境

prod

version

String

應用版本

-

user

Object

User配置

user.id由SDK預設產生

collectors

Object

各Collector(採集器)配置

-

beforeReport

Function

上報資料之前執行beforeReport,可以修改或阻止資料上報。

noop

reportConfig

Object

上報配置

{

flushTime: 3000,

maxEventCount: 20

}

parseViewName

Function

解析視圖名稱(view.name),入參為當前頁面的URL。

-

parseResourceName

Function

解析資源名稱(resource.name),入參為當前資源的URL。

-

evaluateApi

Function

自訂解析API事件,詳細說明請參見evaluateApi配置

-

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: getYourUserName(),
    tags: getYourTags(),
  }
});

reportConfig配置

參數

類型

描述

是否必填

預設值

flushTime

Number

上報時間間隔

取值範圍:[0, 10000]

3000

maxEventCount

Number

一次上報最大數量

取值範圍:[1, 100]

20

樣本

說明

使用業務自有帳號體系強制覆蓋SDK產生的user.id,會對影響UV的計算。

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

Collectors配置

Collector是RUM SDK用於收集頁面監控資料的最小單元。目前RUM SDK內建了api、static Resource等豐富的採集器。

參數

類型

描述

是否必填

預設值

api

Boolean | Object

監聽API請求。

true

jsError

Boolean | Object

監聽JS錯誤。

true

consoleError

Boolean | Object

監聽console.error拋出的錯誤。

true

action

Boolean | Object

監聽使用者行為。

true

樣本

關閉監聽使用者Click行為。

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

evaluateApi配置

evaluateApi提供對API(request或httpRequest)事件的自訂解析。以下為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) => {
    const respText = JSON.stringify(response);

    // 返回的欄位會覆蓋預設內容,不返回的欄位會依然使用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: '' // 回應標頭
      })
    }
  }
});

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

上報自訂資料,必須包含type和name兩個屬性,否則無法上報。屬性的具體業務意義可參考下表,實際使用需要自行定義業務語義。

參數

類型

描述

是否必填

預設值

type

String

類型

-

name

String

名稱

-

group

String

分組

-

value

Number

-

ArmsRum.sendCustom({
  type: 'CustomEvnetType1',
  name: 'customEventName2',
  group: 'customEventGroup3',
  value: 111.11
});

sendException

上報自訂異常資料,必須包含name和message兩個屬性,否則無法上報。

參數

類型

描述

是否必填

預設值

name

String

異常名稱

-

message

String

異常資訊

-

file

String

異常發生檔案

-

stack

String

異常堆棧資訊

-

line

Number

異常發生的行數

-

column

Number

異常發生的列數

-

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

sendResource

上報自訂資源,必須包含name、type和duration三個屬性,否則無法上報。

參數

類型

描述

是否必填

預設值

name

String

資源名。

-

type

String

資源類型,例如:script、api、image、other。

-

duration

String

請求耗時。

-

success

Number

請求成功狀態:

  • 1:成功

  • 0:失敗

  • -1:未知

-

method

String

要求方法。

-

status_code

Number | String

請求狀態代碼。

-

message

String

請求訊息。

-

url

String

請求地址。

-

trace_id

String

鏈路追蹤ID。

-

ArmsRum.sendResource({
  // 必選
  name: 'getListByPage',
  message: 'success',
  duration: 800,
  // 可選
  url: 'https://www.aliyun.com/data/getListByPage',
});