ARMS使用者體驗監控提供一系列SDK配置項,讓您能夠通過設定參數來滿足額外需求。本文介紹小程式應用常用的SDK配置。
SDK配置
參數 | 類型 | 描述 | 是否必填 | 預設值 |
pid | String | 應用ID | 是 | - |
endpoint | String | 上報地址 | 是 | - |
env | - | 應用環境:
| 否 | 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為 重要 該欄位的優先順序高於parseResourceName返回的內容。 | 否 |
message | String | API資訊,一個簡短的描述API概況字串,最大1000字元。 | 否 |
success | Number | 請求成功狀態:
| 否 |
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 | 請求成功狀態:
| 否 | - |
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',
});