本文介绍如何通过日志服务SDK接入小程序的Web用户体验数据。
前提条件
已创建1.1.0及以上版本的全栈可观测实例。具体操作,请参见创建全栈可观测实例。
安装和初始化
本文以接入微信小程序的数据为例。
登录日志服务控制台。
-
在日志应用区域的智能运维页签下,单击全栈可观测。
-
在实例列表中,单击目标实例。
重要该实例需为1.1.0及以上版本。
-
在左侧导航栏中,选择。
-
在接入数据对话框中,完成如下配置。
-
单击微信小程序,然后单击下一步。

-
配置基础信息。
参数
说明
环境
设置环境信息后,当您将不同环境(开发、测试、集成)中的小程序用户体验数据接入到同一个实例中时,数据中将被添加环境信息,便于您区分不同环境中的小程序的用户体验数据。
服务名
设置服务名后,当您将不同的服务(网站、业务、部门)中的小程序用户体验数据接入到同一个实例中时,数据中将被添加服务信息,便于您区分不同服务中的小程序用户体验数据。
上报请求数据
打开上报请求数据开关,表示允许SDK上报API请求数据(fetch、xhr)。
链路追踪
打开链路追踪开关,表示允许SDK上报前后端链路追踪数据。
完成上述配置后,系统将生成对应的安装和初始化脚本。
-
-
复制上述脚本,进行SDK安装和初始化。
小程序相关的SDK只支持通过NPM进行安装。
-
安装NPM包。
npm install @aliyun-sls/web-trace-mini -
初始化SDK。
其中,SLS_TRACER还支持添加其他配置项。更多信息,请参见附录一:SLS_TRACER配置项。
import { SLS_TRACER } from '@aliyun-sls/web-trace-mini'; SLS_TRACER.init({ host: 'cn-beijing.log.aliyuncs.com',// 您在创建实例时所绑定的Project的访问域名。 project: 'demo-test',// 您在创建实例时所绑定的Project。 logstore: 'demo-test-raw', //Logstore名称。创建实例后,日志服务会自动生成一个名为{instance}-raw的Logstore。 workspace: 'demo-test',// 工作空间名称,即实例ID。 env: 'prod',// 自定义环境。 service: 'miniprogram',// 服务名称。 enableRequest: true,// 上报API请求数据。 enableTrace: true // 开启链路监控。 })
-
-
接入SDK后,访问您的测试小程序,产生测试数据。
-
返回到日志服务控制台的全栈可观测应用中。
-
在接入数据对话框中,单击下一步。
-
在接入数据配置向导的检查数据步骤中,单击检查数据。
-
确认数据无误后,单击完成。
上报自定义事件
SLS_TRACER SDK支持自动对某些事件进行监控,同时还支持您手动上报日志。
SLS_TRACER.addLog()接口用于上报自定义事件,该接口支持定义一个JSON格式的参数及支持嵌套JSON格式。上报的数据支持使用日志服务查询和分析语句。SLS_TRACER.addLog()接口的调用方式如下:
SLS_TRACER.addLog({
key: 'value',
number: 1,
array: [],
json: {
json: 'json'
}
})
支持部分参数热更新
在某些场景中,不一定能立即获取uid等用户参数,SLS_TRACER SDK允许在SDK初始化后动态设置这部分参数。当前支持热更新的参数有uid、nickname、env、service、version、custom。调用方式如下所示。
SLS_TRACER.setOptions({
uid: 'uid',
nickname: 'newnickname',
env: 'newEnv',
custom: {
c: 'newCustom',
},
version: 'newVersion',
service: 'newService',
})
自定义插件
SLS_TRACER SDK支持在上报数据过程中修改数据。
// 必须在init之前调用。
SLS_TRACER.use({
name: 'myPlugin',
run: function () {
this.subscribe(
'*', // 订阅所有的数据源。如果是自定义订阅的事件,必须设置为星号(*)。
(data, next) => {
//
//
// 可以根据data.otBase.t,确定数据类型。
//
//
next(data) // 将新的数据传入下一个处理者时,必须调用,否则该条数据会停止上报。
},
0, // 通过优先级(0~99),控制执行插件的顺序。
)
},
})
// data的数据类型。
export interface NotifyData<OT extends Partial<OTTrace>, Extra = Record<string, any> | undefined> {
otBase: OT
extra: Extra
}
附录一:SLS_TRACER配置项
|
参数名 |
类型 |
是否必填 |
样例 |
描述 |
|
project |
string |
是 |
'my-project' |
您在创建实例时所绑定的Project名称。 |
|
host |
string |
是 |
'cn-hangzhou.log.aliyuncs.com' |
您在创建实例时所绑定的Project的访问域名。如何获取,请参见公网。 |
|
logstore |
string |
是 |
'my-logstore-raw' |
创建实例后,日志服务会自动生成一个名为{instance}-raw的Logstore。其中{instance}为实例ID。 此处需配置为该Logstore。 |
|
workspace |
string |
是 |
'my-workspace' |
工作空间名称,即实例ID。 |
|
uid |
string |
否 |
'123456' |
用户ID。 |
|
nickname |
string |
否 |
'Alice' |
用户昵称。 |
|
env |
string |
否 |
'prod' |
自定义环境。 |
|
service |
string |
否 |
'miniprogram' |
服务名称。 |
|
version |
string |
否 |
'1.0.0' |
版本号。 |
|
custom |
Record<string, any> |
否 |
{ key: 'value' } |
自定义参数。 该字段用于存储应用程序中的自定义信息,可以是任何类型的JSON对象。 |
|
trackTimeThreshold |
number |
否 |
5 |
发送数据的时间阈值,单位:秒(s)。默认值:2。 0表示立即发送。 |
|
trackCountThreshold |
number |
否 |
20 |
发送数据的条数阈值。默认值:10。 |
|
enableTrace |
boolean |
否 |
true |
是否打开链路追踪功能。 |
|
enableTraceRequestConfig |
(((value: string) => boolean) | string | RegExp)[] |
否 |
无 |
需要开启Trace功能的请求。 该参数为数组类型,包含需要开启Trace功能的请求的类型和URL。 |
|
customTraceHeaders |
Record<string, string> |
否 |
无 |
Trace Header。该字段用于在发送请求时自定义Trace Header。 |
|
enableRequest |
boolean |
否 |
true |
是否上报请求数据。 |
|
ignoreRequestConfig |
(((value: string, status: number) => boolean) | string | RegExp)[] |
否 |
无 |
不需要上报的请求。 该参数为数组类型,包含不需要上报的请求的类型和URL。 |
|
enableRequestBodyConfig |
IEnableTrackRequestBody |
否 |
无 |
需要记录Body的请求。该字段为一个对象,包含需要记录Body的请求的类型和URL。 |
|
enableRuntimeError |
boolean |
否 |
true |
是否上报JS错误。 |
|
ignoreRuntimeErrorConfig |
(((value: string) => boolean) | string | RegExp)[] |
否 |
无 |
运行时需要忽略的错误。 该参数为数组类型,包含需要忽略的错误类型。 |
|
enableResourceError |
boolean |
否 |
true |
是否上报JS资源错误。 |
|
enableResourcePerf |
boolean |
否 |
true |
是否上报资源性能数据(js、css、image、audio、video)。 |
|
ignoreResourceConfig |
(((value: string) => boolean) | string | RegExp)[] |
否 |
无 |
需要忽略的资源请求。 该参数为数组类型,包含需要忽略的资源的类型和URL。 |
|
enablePerf |
boolean |
否 |
true |
是否上报页面加载性能数据。 |
|
enableConsoleLog |
enum |
否 |
'warn' |
日志级别,取值为error、warn、log、info、debug、false。 配置为info 则只记录 error、warn、info 级别的日志。 |
|
platformSDK |
any |
否 |
wx |
小程序平台的SDK。 已经适配的平台可以不填写。适配平台如下:
|
|
platformRequestName |
string |
否 |
request |
小程序平台SDK发送请求的接口名称,例如微信小程序的为request。 默认使用request或httpRequest。 |
附录二:日志字段详情
小程序用户体验数据的字段详情与Web用户体验数据类似。更多信息,请参见附录二:日志字段详情。