本文介绍如何通过日志服务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用户体验数据类似。更多信息,请参见附录二:日志字段详情。