前端监控基础知识

前端监控的流程

前端监控的流程大致上包括了数据收集、组装上报、清晰存储、数据消费。

数据收集

  • PV 监控:页面切换后新的 URL,页面切换的原因(如初始化的加载、hash mode、history mode)
  • JS 错误:错误的类型、描述、行列号、堆栈、错误发生前的用户交互、错误的上下文,目标是更快地定位错误并修复
  • 性能监控:首屏加载各阶段的耗时、性能指标、SPA 切换耗时、long task 等等
  • 请求监控:请求的路径、状态码、请求头、响应头、请求各阶段的耗时
  • 白屏监控:白屏发生的页面、关联的异常、相关的上下文,目的是快速复现白屏原因并解决
  • 静态资源监控、用户行为监控、自定义监控

组装上报

  • 基础信息保证:页面路径、页面标识、全局 context、部署的版本、部署的环境、网络情况等等
  • 采样逻辑:可能在某些页面不需要上传某些数据,可以配置一些条件采样
  • 预上报流程:利用一些生命周期的钩子,补充更多的上下文,或者进行信息的脱敏
  • 一条条的信息暂存在队列中,最后聚合上报
  • sendBeacon:用户关闭页面但是暂存的数据还未发送,这时候需要立即使用 sendBeacon 进行发送,因为它不会阻碍页面的卸载

清洗存储

  • User-Agent 解析:解析浏览器的版本、系统版本、机型、设备品牌等
  • IP 解析:地区、省市、城市、运营商、地理位置等
  • 分类型进行落表落库
  • 处理 JS 错误:堆栈归一化(即堆栈格式化)和堆栈反解析(将混淆堆栈通过 source map 反解析成原始的堆栈)
  • clickhouse 存储

数据消费

  • 总览分析:站点总体的评分情况
  • 各功能模块多维度分析:不同功能模块的关注点不同,比如 JS 错误模块主要关注具体错误的跟进和修复;性能模块主要关注某个页面的性能指标,进行针对性优化;站点查询为用户从进入站点到退出站点全过程的操作
  • 数据订阅:将业务关注的指标实时地推送给业务
  • 实时报警:引导业务设置某些报警的边界信息,当满足条件的时候主动地推送给业务

前端监控关注点

  • 可交互性
    • 卡顿监控:由业务逻辑导致,通过用户行为来定位具体的问题
    • 请求监控:长期关注,并关注突变情况,以此为基准衡量服务端的性能
  • 服务稳定性:关注请求的成功率
  • 加载速度:首屏性能,明确得出可优化的阶段,并指导优化
  • 可用性
    • 白屏错误:JS 错误、静态资源错误、请求错误等
    • 请求错误:长期关注错误率的变化、短期的波动等
    • JS 错误:source map 反解,以及对应 issue 的管理
    • 静态资源错误:着重展示能定位到问题的静态资源,排除由于用户自身网络情况导致的问题,降低噪音
  • 业务数据
    • PV / UV:用户的留存率
    • 自定义事件

前端监控的目标

  • 及时发现线上问题,让一切有迹可循
  • 监控站点体验,指导性能优化
  • 运行态的稳定性建设
  • 主动聚焦和智能诊断