小程序应用接入¶
通过引入 SDK,收集微信小程序应用的性能指标、错误日志和资源请求数据,并上报到观测云,以可视化方式分析应用性能。
创建小程序应用¶
- 进入「用户访问监测 > 应用列表」,点击「新建应用」,应用类型选择「小程序」。
- 在「定义应用」中填写应用名称、应用 ID,并创建应用。控制台会生成此应用的 Client Token。
- 创建成功后,在「选择接入方式」中选择 Agent 自动接入或手动接入,再按照「接入配置」完成配置。已有小程序应用可进入其配置页面继续接入。
小程序应用应使用本页的小程序 SDK。即使与 Web 应用使用同一套业务代码,也需要按实际应用类型分别接入。
选择接入方式¶
| 接入方式 | 适用场景 | 操作入口 |
|---|---|---|
| Agent 自动接入 | 希望由编程助手分析小程序项目,并根据项目情况规划和完成 SDK 接入 | 复制控制台生成的 Agent 提示词,在小程序代码仓库中执行 |
| 手动接入 | 希望自行引入 SDK 并配置上报参数 | 选择公网 DataWay 或本地环境部署,再按本页示例修改代码 |
Agent 自动接入¶
- 在小程序应用配置页面选择「Agent 自动接入」。
- 复制「接入配置」中的完整提示词,在小程序代码仓库中打开编程助手并粘贴。提示词应来自当前小程序应用,使用该应用的 ID。
- 按 Agent 的接入指引完成配置,再按验证接入确认小程序数据上报和入库。
若页面提示个人 API Key 或临时授权码未就绪,请按提示生成个人 API Key、联系管理员开通权限或补齐信息后重新复制提示词。
手动接入¶
通常优先选择「使用公网 DataWay」,无需自行部署 DataKit。需要自行管理数据接收端,或当前工作空间未提供公网 DataWay 地址时,可选择「本地环境部署」。
| 数据上报方式 | 前置条件 | 初始化参数 |
|---|---|---|
| 使用公网 DataWay | 从当前应用的接入配置中获取公网 DataWay 地址和 Client Token | applicationId、site、clientToken |
| 本地环境部署 | 自行安装 DataKit 并启用 RUM 采集器,确保小程序可以访问其上报地址 | applicationId、datakitOrigin |
NPM 和 CDN 是 SDK 的引入方式,与上报到公网 DataWay 或本地 DataKit 是两项独立选择。
使用公网 DataWay¶
- 在「手动接入」下选择「使用公网 DataWay」。
- 从当前应用的接入配置中复制
applicationId、site和clientToken。请使用控制台提供的当前站点地址,不要将控制台登录地址或其他站点的地址作为site。 - 将
site对应域名加入微信小程序管理后台的 request 合法域名,再按集成 SDK完成代码配置。此方式无需安装 DataKit 或另行配置 RUM 采集器。
本地环境部署¶
- 安装 DataKit,并启用 RUM 采集器。
- 确保小程序所在网络可以访问 DataKit 的数据上报地址,并按需安装 IP 地理信息库,以解析用户 IP 对应的地理信息。
- 在「手动接入」下选择「本地环境部署」,将
datakitOrigin配置为实际的 DataKit 接收地址,并将对应域名加入小程序管理后台的 request 合法域名。 - 按集成 SDK中的本地环境部署示例初始化,不要同时填写
site和clientToken。
集成 SDK¶
先选择一种 SDK 引入方式,再按照所选的数据上报方式初始化。SDK 需要在 app.js 中、App() 调用之前初始化,并且只初始化一次。
引入 SDK¶
初始化 SDK¶
以下两种配置只选一种。公网 DataWay 使用 site 和 clientToken,本地环境部署使用 datakitOrigin,不要在同一份初始化配置中同时填写两套上报参数。
将占位符替换为当前应用的实际配置;allowedTracingUrls 只填写需要关联链路的业务 API 地址,不需要链路追踪时可移除。
验证接入¶
- 检查所选上报地址对应的域名已经加入微信小程序的 request 合法域名。
- 打开小程序,触发页面访问、按钮点击和业务请求,在开发者工具中确认存在成功的 RUM 上报请求,且没有域名校验或 SDK 初始化错误。
- 进入「用户访问监测 > 应用列表」,打开对应小程序应用,确认查看器中有 View、Resource 或 Action 等数据。
- 发布前使用真机验证网络连通和数据上报,避免仅依赖开发者工具中的调试配置。
如果没有数据,先确认 applicationId 与当前小程序应用一致,再检查所选上报方式的参数、request 合法域名和 sampleRate。
配置¶
初始化参数¶
| 参数 | 类型 | 是否必须 | 默认值 | 描述 |
|---|---|---|---|---|
applicationId |
String | 是 | 从观测云创建的应用 ID。 | |
datakitOrigin |
String | 本地环境部署时 | DataKit 数据上报地址。仅本地环境部署时配置;对应域名需要加入小程序管理后台的 request 合法域名。 | |
site |
String | 公网 DataWay 时 | 当前站点的公网 DataWay 地址,从应用接入配置中复制;对应域名需要加入小程序管理后台的 request 合法域名。 | |
clientToken |
String | 公网 DataWay 时 | 公网 DataWay 上报使用的 Client Token,由控制台创建应用时生成。 | |
env |
String | 否 | 小程序应用当前环境,如 prod:线上环境;gray:灰度环境;pre:预发布环境;common:日常环境;local:本地环境。 | |
version |
String | 否 | 小程序应用的版本号。 | |
service |
String | 否 | 当前应用的服务名称,默认为 miniapp,支持自定义配置。 |
|
sampleRate |
Number | 否 | 100 |
指标数据收集百分比:100 表示全收集,0 表示不收集。 |
sessionSampleRate |
Number | 否 | 100 |
sampleRate 的兼容别名。两者同时设置时优先使用 sampleRate。 |
remoteConfiguration |
Boolean | 否 | false |
是否开启远程配置。SDK 会先按本地配置启动,再异步拉取并应用支持的配置项。 |
remoteConfigration |
Boolean | 否 | false |
remoteConfiguration 的旧拼写兼容项,不建议新项目使用。 |
remoteConfigurationFetchTimeout |
Number | 否 | 3000 |
远程配置请求超时时间,单位为毫秒。请求失败或超时后继续使用本地配置。 |
trackInteractions |
Boolean | 否 | false |
是否开启用户行为采集。 |
trackResourceQueryString |
Boolean | 否 | false |
是否采集请求 URL 的查询串。查询串可能包含 token 或用户 ID,仅在确认安全后开启。 |
trackRequestErrorResponseBody |
Boolean | 否 | false |
是否将失败请求的响应体写入错误堆栈。响应体可能包含敏感数据。 |
requestErrorResponseLengthLimit |
Number | 否 | 32768 |
失败请求响应体允许写入错误堆栈的最大字符数,仅在开启 trackRequestErrorResponseBody 后生效。 |
trackLaunchOptions |
Boolean | 否 | false |
是否采集小程序启动参数中的 query 和 referrerInfo。 |
beforeSend |
Function | 否 | 数据进入发送队列前的回调,可修改事件;返回 false 可丢弃非 View 事件。回调异常不会中断业务或 SDK。 |
|
userId / user_id |
String | 否 | 初始化时设置登录用户 ID;也可以在初始化后调用 setUser({ id })。 |
|
traceType |
Enum | 否 | ddtrace |
配置链路追踪工具类型,如果不配置默认为 ddtrace。目前支持 ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent 6 种数据类型。❗️ 1. opentelemetry 支持 zipkin_single_header、w3c_traceparent、zipkin、jaeger 4 种类型。2. 配置相应类型的 traceType 需要对相应的 API 服务 设置不同的 Access-Control-Allow-Headers,可参考 APM 如何关联 RUM 。 |
traceId128Bit |
Boolean | 否 | false |
是否生成 128 位 traceID,与 traceType 对应,目前支持 zipkin、jaeger。 |
allowedTracingUrls |
Array |
否 | [] |
允许注入 Trace Header 的完整请求 URL 匹配列表。字符串按 URL 前缀匹配;正则和函数接收完整 URL;对象使用 { match, traceType } 为单条规则指定传播类型。版本要求为 2.2.19 及以上。 |
allowedTracingOrigins |
Array |
否 | 已废弃的兼容配置,仅按请求 Origin 精确匹配;新项目使用 allowedTracingUrls。两者同时设置时优先使用 allowedTracingUrls。 |
|
allowTraceHeaderWithoutSession |
Boolean | 否 | false |
当前 Session 未命中采样时,是否仍为命中 allowedTracingUrls 的请求注入 Trace Header。开启后不会强制采样或上报该 Session 的 RUM 数据。 |
isIntakeUrl |
Function | 否 | function(url) {return false} |
自定义方法根据请求资源 url 判断是否需要采集对应资源数据,默认都采集。返回:false 表示要采集,true 表示不需要采集。❗️ 1. 该参数方法返回结果必须为 Boolean 类型,否则认为是无效参数。 2. 版本要求为 2.1.10 及以上。 |
Trace Header URL 匹配¶
allowedTracingUrls 使用完整请求 URL 匹配。字符串采用前缀匹配,RegExp 和 Function 接收完整 URL。需要为某条规则指定不同的传播类型时,使用同时包含 match 和 traceType 的对象:
allowedTracingUrls: [
'https://api.example.com/v1/',
/https:\/\/.*\.my-api-domain\.com\/v2\//,
function (url) {
return url.indexOf('https://internal.example.com/') === 0
},
{ match: 'https://otel.example.com/', traceType: 'w3c_traceparent' },
]
allowedTracingOrigins 仅用于兼容旧配置:字符串和正则都针对请求 Origin 匹配。若同时配置两个参数,SDK 只使用 allowedTracingUrls。
未采样 Session 的 Trace Header¶
allowTraceHeaderWithoutSession 默认为 false。设置为 true 后,即使当前 Session 未命中 RUM 采样,SDK 仍会为命中 allowedTracingUrls 的请求注入 Trace Header。该配置不会强制采样或创建新的 Session,也不会上报未采样 Session 的 View、Action、Resource、Error 等 RUM 数据。
注意¶
- 将实际使用的上报地址(公网 DataWay 的
site,或本地环境部署的datakitOrigin)对应域名加入小程序管理后台的 request 合法域名。 - 因为目前微信小程序请求资源 API
wx.request、wx.downloadFile返回数据中profile字段目前 ios 系统不支持返回,所以会导致收集的资源信息中和 timing 相关的数据收集不全。目前暂无解决方案:request、downloadFile、API 支持情况。 trackInteractions用户行为采集开启后,因为微信小程序的限制,无法采集到控件的内容和结构数据,所以在小程序 SDK 里面我们采取的是声明式编程,通过在 wxml 文件里面设置 data-name 属性,可以给交互元素添加名称,方便后续统计是定位操作记录, 例如: