VIP客户用户体验-追踪方案草稿

1,721 阅读10分钟

背景

此方案基于RUM之SPA应用性能的可观测,欢迎查看点赞、评论和收藏。

往期文章(包含部分掘金上榜文章)

《谷歌教你如何说服老板为用户体验掏钱(1)- 电商品牌的最佳实践》

《国内第一篇讲如何减少卡顿的代码级别详细文章

《前端同学如何快速制定业务大盘

《巧用火焰图快速分析链路性能》

《前端可观测性的几个基础指标-1022

《某费控独角兽公司的技术分享--如何提高用户体验》

《对前端性能优化的一些小看法

《网站性能优化技巧》

《前端应用性能应该采集的数据》

《网站性能之单页面应用的杂谈》

《web应用简析》

《裸奔的前端绿皮车

《快速搭建全链路平台

《报错/卡顿是制约产品体验的关键因素

《VIP客户用户体验-追踪方案草稿》

《四个简单例子教你提高用户体验》

正文:基本思路

实现需要VIP客户关系的绑定:一种思路是使用客户的user体系,另一种思路是使用追踪ID。

逻辑关系

基本介绍

思路一

通过sdk的自定义userId或者tag的方式实现,这里使用客户自己的用户体系。

userID实现

# 引入sdk
import { datafluxRum } from '@cloudcare/browser-rum'
# 根据vip逻辑设置用户标识
if(VIP)
datafluxRum.setUser({
    id: VIP标识,
})

查看

自定义tag实现

   # 引入sdk
			import { datafluxRum } from '@cloudcare/browser-rum'
   # 根据信息写入tag 
      datafluxRum.addRumGlobalContext("uId"17600353988);
      datafluxRum.addRumGlobalContext("uAddress""广东省增城丽维家中心");
      datafluxRum.addRumGlobalContext("uBussiness""家具业务线");
      datafluxRum.addRumGlobalContext("uToken",uToken);
      datafluxRum.addRumGlobalContext("custom",{
        uId:17600353988,
        uAddress:"广东省增城丽维家中心",
        uToken:m,
        "uBussiness""家具业务线"
      })

查看



这里能根据会话看到用户访问的轨迹,也就是页面浏览的行为,点击数据,资源加载数据,以及页面切换情况,

会话轨迹

会话情况包含:

image.png

页面性能

image.png

请求情况,能追踪到后端和数据库详情

image.png

image.png

后端的每个类 数据查询的语句的详细情况

image.png

错误情况

image.png

错误详情

字段类型描述
error_sourcestring错误来源,参考值:console
error_typestring错误类型,参考链接:error type
resource_statusstring资源请求返回的状态值
resource_urlstring资源 URL
resource_url_hoststring资源 URL 域名部分
resource_url_pathstring资源 URL path 部分
resource_url_path_groupstring资源 URL path 分组
resource_methodstring资源请求方式
还能针对代码级别的错误进行sourcemap 还原

思路二

通过是用观测云的trackID的方式实现,这里由客户使用自己的用户体系。

# 引入sdk
import { datafluxRum } from '@cloudcare/browser-rum'
# 业务逻辑生成用户体系,与trackId 这两者形成绑定关系
if(VIP){
	datafluxRum.addRumGlobalContext('track_id','***');
}

查看

试用

点我注册试用或者加我微信768838557

image.png

接入的数据

数据类型

用户访问监测包括六种数据类型。

类型描述
session用户会话信息记录,当前会话中,将会基于会话维度用户页面、资源、操作、错误、长任务相关访问数据。
view用户访问页面时,都会生成一个页面查看记录。当用户停留在同一页面上时,资源,长任务,错误和操作记录将通过view_id属性链接到相关的RUM视图。
resource用户访问页面时,加载的资源信息记录。
error用户访问监测采集器收集浏览器上的所有前端错误。
long_task对于浏览器中的任何阻塞主线程超过50ms的任务,都会生成一条长任务记录。
action跟踪用户页面浏览过程中所有的用户交互记录。

六种数据类型的层次结构如下图

默认属性

默认属性为全局属性,用户访问监测的场景构建和事件告警都可以通过下面的默认属性进行查询。

SDK属性

字段类型描述
sdk_namestring采集器名称,固定名称: df_web_rum_sdk df_miniapp_rum_sdk df_ios_rum_sdk df_android_rum_sdk
sdk_versionstring采集器版本信息

应用属性

字段类型描述
app_idstring必填,用户访问应用唯一ID标识,在控制台上面创建监控时自动生成。
envstring必填,环境字段。属性值:prod/gray/pre/common/local。其中 prod:线上环境 gray:灰度环境 pre:预发布环境 common:日常环境 local:本地环境
versionstring必填,版本号。

用户 & 会话属性

字段类型描述
useridstring默认获取浏览器 cookie 作为 userid。如果使用 自定义用户标识 设置用户 id,那么 userid 就会跟定义的保持一致。注意:cookie 过期时间 60 天。
session_idstring会话 id。
session_typestring会话类型。参考值:usersynthetics user 表示是 RUM 功能产生的数据; synthetics 表示是 headless 拨测产生的数据。
is_signinboolean是否是注册用户,属性值:True / False。

设备 & 分辨率属性

字段类型描述
osstring操作系统
os_versionstring操作系统版本
os_version_majorstring设备报告的主要操作系统版本
browserstring浏览器提供商
browser_versionstring浏览器版本
browser_version_majorstring浏览器主要版本信息
screen_sizestring屏幕宽度*高度,分辨率

地理 & 网络属性

字段类型描述
ipstring用户访问IP地址
ispstring运营商
network_typestring网络连接类型,属性值参考: wifi2g3g4g5gunknown(未知网络)unreachable(网络不可用)
countrystring国家
country_iso_codestring国家 iso_code
provincestring
citystring城市

View 属性

字段类型描述
view_idstring每次访问页面时产生的唯一 ID
is_activeboolean判断用户是否还在活跃状态,参考值: truefalse
view_loading_typestring页面加载类型, 参考值:initial_load  route_change route_change为 SPA 页面加载模式
view_referrerstring页面来源
view_urlstring页面 URL
view_hoststring页面 URL 域名部分
view_pathstring页面 URL path 部分
view_path_groupstring页面 URL path 分组
view_url_querystring页面 URL query 部分

用户属性

除了默认属性以外,还可以通过用户属性构建场景和配置事件告警。用户属性是非全局属性,通过用户属性,可以跟踪用户访问应用的整个过程,定位和发现用户受影响的访问情况,监控用户访问性能。

其他数据类型属性

Session

统计指标

字段类型描述
time_spentnumber(ns)当前会话持续时长
session_view_countnumber当前会话关联view_id个数
session_error_countnumber当前会话产生错误个数
session_resource_countnumber当前会话加载资源个数
session_action_countnumber当前会话用户操作次数
session_long_task_countnumber当前会话产生长任务次数

属性

字段类型描述
session_idstring会话 id(后台停留 30s 以上,会生成一个新的 session_id )
session_typestring会话类型。参考值:usertest user 表示是 RUM 功能产生的数据; test 表示是 headless 拨测产生的数据。
session_referrerstring会话来源。一般是记录来源的页面地址。
session_first_view_idstring当前会话的第一个页面的 view_id
session_first_view_urlstring当前会话的第一个页面的 URL
session_first_view_hoststring当前会话的第一个页面的域名
session_first_view_pathstring当前会话的第一个页面的地址
session_first_view_path_groupstring当前会话的第一个页面的地址分组
session_first_view_url_querystring当前会话的第一个页面的 query 信息
session_last_view_idstring当前会话的最后一个访问页面的 view_id
session_last_view_urlstring当前会话的最后一个页面的 URL
session_last_view_hoststring当前会话的最后一个页面的域名
session_last_view_pathstring当前会话的最后一个页面的地址
session_last_view_path_groupstring当前会话的最后一个页面的地址分组
session_last_view_url_queryobject当前会话的最后一个页面的 query 信息

View

注意:view属性为全局参数,以下仅展示view的其他参数信息

指标

字段类型描述
first_contentful_paintnumber(ns)首次内容绘制时间 (FCP) 计算方式:firstPaintContentEnd - firstPaintContentStart
largest_contentful_paintnumber(ns)最大内容绘制(页面加载时间轴中的一刹那,其中呈现了视口中最大的 DOM 对象) 参考链接:LCP 计算方式:统计最近上报的一次 PerformanceEntry 时间
cumulative_layout_shiftnumber累计布局版面转移 (CLS),0 表示载入过程没有版面移动变化
first_input_delaynumber(ns)首次输入延时 (FID) 计算方式:performance.now() - event.timeStamp
loading_timenumber(ns)页面加载时间 initial_load 模式下计算公式: ① loadEventEnd - navigationStart ② 页面首次无活动时间 - navigationStart route_change 模式下计算公式:用户点击时间 - 页面首次无活动时间 页面首次无活动时间:页面超过 100ms 无网络请求或 DOM 突变
dom_interactivenumber(ns)DOM 结构构建完毕时间 获取方式:time = performanceTiming.domInteractive; 参考链接:MDN dom_interactive
dom_content_loadednumber(ns)DOM 内容加载时间 计算方式:domContentLoadedEventEnd - domContentLoadedEventStart
dom_completenumber(ns)DOM 树解析完成时间 获取方式:time = performanceTiming.domComplete; 参考链接:MDN dom_complete
load_eventnumber(ns)事件加载时间 计算方式:loadEventEnd - loadEventStart
first_meaningful_paintnumber(ns)首屏时间 计算方式:firstPaintContentEnd - firstPaintContentStart
first_paint_timenumber(ns)首次渲染时间 计算方式:responseEnd - fetchStart
resource_load_timenumber(ns)资源加载时间 计算方式:loadEventStart - domContentLoadedEventEnd
time_to_interactivenumber(ns)首次可交互时间 计算方式:domInteratice - requestStart
domnumber(ns)DOM 解析耗时 计算方式:domComplete - domInteractive
dom_readynumber(ns)DOM Ready时间 计算方式:domContentLoadedEventEnd - navigationStart
time_spentnumber(ns)页面停留时间

统计指标

字段类型描述
view_error_countnumber每次页面加载时发生的错误次数
view_resource_countnumber每次页面加载时请求的资源个数
view_long_task_countnumber每次页面加载时产生的长任务个数
view_action_countnumber页面查看过程中操作的次数
view_apdex_levelnumber页面 Apdex 满意度。 基础指标:first_paint_time(换算成秒单位) 参考值:0/1/2/3/4/5/6/7/8/9 (根据 first_paint_time 值,9 表示>= 9 秒)

Resource

指标

字段类型描述
resource_sizenumber资源大小,默认单位:byte
resource_dnsnumber(ns)资源加载 DNS 解析时间 计算方式:domainLookupEnd - domainLookupStart
resource_tcpnumber(ns)资源加载 TCP 连接时间 计算方式:connectEnd - connectStart
resource_sslnumber(ns)资源加载 SSL 连接时间 计算方式:connectEnd - secureConnectStart
resource_ttfbnumber(ns)资源加载请求响应时间 计算方式:responseStart - requestStart
resource_transnumber(ns)资源加载内容传输时间 计算方式:responseEnd - responseStart
resource_first_bytenumber(ns)资源加载首包时间 计算方式:responseStart - domainLookupStart
durationnumber(ns)资源加载时间 计算方式:duration(responseEnd-startTime)

属性

字段类型描述
resource_urlstring资源 URL
resource_url_hoststring资源 URL 域名部分
resource_url_pathstring资源 URL path 部分
resource_url_querystring资源 URL query 部分
resource_url_path_groupstring资源 URL path 分组
resource_typestring资源的类别
resource_methodstring资源请求方式
resource_statusstring资源请求返回的状态值
resource_status_groupstring资源请求返回的状态分组值

Error

指标

字段类型描述
error_messagestring错误信息
error_stackstring错误堆栈

属性

字段类型描述
error_sourcestring错误来源,参考值:consolenetworksourcecustom
error_typestring错误类型,参考链接:error type
resource_statusstring资源请求返回的状态值
resource_urlstring资源 URL
resource_url_hoststring资源 URL 域名部分
resource_url_pathstring资源 URL path 部分
resource_url_path_groupstring资源 URL path 分组
resource_methodstring资源请求方式

Long Task

指标

字段类型描述
durationnumber(ns)页面加载时产生的长任务花费时间

Action

指标

字段类型描述
durationnumber(ns)页面操作花费时间

统计指标

字段类型描述
action_long_task_countnumber操作关联长任务次数
action_resource_countnumber操作关联资源请求次数
action_error_countnumber操作关联的错误次数

属性

字段类型描述
action_idstring用户页面操作时产生的唯一 ID
action_namestring操作名称
action_typestring操作类型

试用

点我注册试用或者加我微信768838557