跳转至

小程序应用接入


通过引入 SDK 文件,收集小程序应用的性能指标、错误日志和资源请求数据,并上报到观测云平台,以可视化方式分析小程序应用的性能。

前置条件(datakit 接入)

开始接入

  1. 进入用户访问监测 > 新建应用 > 小程序;
  2. 输入应用名称;
  3. 输入应用 ID;
  4. 选择应用接入方式:

  5. 公网 DataWay:直接接收 RUM 数据,无需安装 DataKit 采集器。

  6. 本地环境部署:满足前置条件后接收 RUM 数据。

接入方式

  1. 确保 DataKit 已安装并配置为公网可访问,并安装 IP 地理信息库;
  2. 在控制台获取 applicationId、env、version 等参数,开始接入应用;
  3. 集成 SDK 时,将 datakitOrigin 设置为 DataKit 的域名或 IP。

  1. 在控制台获取 applicationId、clientToken 和 site 等参数,开始接入应用;
  2. 集成 SDK 时无需配置 datakitOrigin,数据将默认发送到公网 DataWay。

使用方法

在小程序的 app.js 文件以如下方式引入代码:

注意:引入位置需要在 App() 初始化之前。

NPM 包引入方式可参考微信官方 npm 引入方式

const { datafluxRum } = require('@cloudcare/rum-miniapp')
// 初始化 Rum
datafluxRum.init({
  datakitOrigin: '<DATAKIT ORIGIN>',// 必填,Datakit域名地址 需要在微信小程序管理后台加上域名白名单
  site: "http://172.16.212.186:9529", // 公网 DataWay 对应站点的域名
  clientToken: "a993f53a8ea04bc6b9350e5e670a3a3b", //公网 DataWay 上报所需的客户端 token,在观测云控制台创建应用时生成
  applicationId: '<应用 ID>', // 必填,dataflux 平台生成的应用ID
  env: 'testing', // 选填,小程序的环境
  version: '1.0.0', // 选填,小程序版本
  service: 'miniapp', //当前应用的服务名称
  trackInteractions: true,
  traceType: 'ddtrace', // 非必填,默认为ddtrace,目前支持 ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent 6种类型
  allowedTracingUrls: ['https://api.example.com/v1/', /https:\/\/.*\.my-api-domain\.com\/v2\//], // 按完整请求 URL 匹配
  allowTraceHeaderWithoutSession: true, // 未采样 Session 仍注入 Trace Header,不会因此上报 RUM 数据
})

下载文件本地方式引入

const { datafluxRum } = require('./lib/dataflux-rum-miniapp.js')
// 初始化 Rum
datafluxRum.init({
  datakitOrigin: '<DATAKIT ORIGIN>',// 必填,Datakit域名地址 需要在微信小程序管理后台加上域名白名单
  site: "http://172.16.212.186:9529", // 公网 DataWay 对应站点的域名
  clientToken: "a993f53a8ea04bc6b9350e5e670a3a3b", //公网 DataWay 上报所需的客户端 token,在观测云控制台创建应用时生成
  applicationId: '<应用 ID>', // 必填,dataflux 平台生成的应用ID
  env: 'testing', // 选填,小程序的环境
  version: '1.0.0', // 选填,小程序版本
  service: 'miniapp', //当前应用的服务名称
  trackInteractions: true,
  traceType: 'ddtrace', // 非必填,默认为ddtrace,目前支持 ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent 6种类型
  allowedTracingUrls: ['https://api.example.com/v1/', /https:\/\/.*\.my-api-domain\.com\/v2\//], // 按完整请求 URL 匹配
  allowTraceHeaderWithoutSession: true, // 未采样 Session 仍注入 Trace Header,不会因此上报 RUM 数据
})

配置

初始化参数

参数 类型 是否必须 默认值 描述
applicationId String 是 从观测云创建的应用 ID。
datakitOrigin String 是 DataKit 数据上报 Origin;
❗️ 需要在小程序管理后台加上 request 白名单。
site String 是(公网dataway上报方式 必填) 公网 DataWay 对应站点的域名 注释: 协议(包括://),域名(或IP地址)[和端口号] 例如:https://www.dataway.com, http://100.20.34.3:8088
clientToken String 是 (公网dataway 必填) 公网 DataWay 上报所需的客户端 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 数据。

注意

  1. datakitOrigin 所对应的 DataKit 域名必须在小程序管理后台加上 request 白名单。
  2. 因为目前微信小程序请求资源 API wx.request、wx.downloadFile 返回数据中 profile 字段目前 ios 系统不支持返回,所以会导致收集的资源信息中和 timing 相关的数据收集不全。目前暂无解决方案:request、downloadFile、API 支持情况。
  3. trackInteractions 用户行为采集开启后,因为微信小程序的限制,无法采集到控件的内容和结构数据,所以在小程序 SDK 里面我们采取的是声明式编程,通过在 wxml 文件里面设置 data-name 属性,可以给交互元素添加名称,方便后续统计是定位操作记录, 例如:
<button bindtap="bindSetData" data-name="setData">
  setData
</button>

文档评价

文档内容是否对您有帮助?