这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
SDK全称是“Software Development Kit”,直译就是软件开发工具集。说的再通俗点就是一个面向开发者,针对特定领域的软件包。比如 Java SDK(JDK),就是一个Java领域的软件包。基于它,开发人员就可以快速构建自己的Java应用。比较规范的SDK一般都会包含若干的API、开发工具集和说明文档。
前端性能监控是一站式前端监控解决方案,专注于 Web 和小程序等大前端领域,主要关注用户页面性能(页面测速、接口测速、CDN 测速等)和质量(JS 错误、Ajax 错误等),并且实现前后端一体化监控。用户只需要安装 SDK 到自己的应用中,通过简单配置化,即可实现对用户页面质量的全方位守护,真正做到了低成本使用和无侵入监控。
前端监控SDK的共性
和其他SDK不同,前端监控SDK基本上要求开箱即用,一个<script src>就可以完成所有监控逻辑。在文档中插入script标签时,可以带上data-appid属性,以区分当前监控的应用,脚本内可通过document.currentScript读取,当然,如果服务端以及绑定了域名,那不需要appid也无所谓。
前端监控的目标各有不同,包括:测速、性能、错误、行为等方面。重点集中在研究监控用户行为无论以什么方向为目标,SDK的设计都需要包含如下几个方面:
- 数据收集
- 数据存储(日志的结构,日志是存在内存中,还是存在indexedDB中)
- 数据上报(上报周期:立即,延时;上报策略:什么情况下触发上报;上报压缩等)
- 生命周期
- 代码分离(快速加载主体代码,异步加载功能代码;将数据处理移到webworker中)
优势
多平台
前端性能监控目前支持 Web、Hippy、小程序(微信、QQ)和 React Native 等平台的数据上报,支持无打点首屏测速、资源测速、API 测速、白名单机制和离线日志等功能特性。
无侵入
前端性能监控 SDK 无需在业务代码中打点或者做任何其他操作,可以做到与业务代码充分解耦。 SDK 将会自动监控前端错误,在错误发生时上报错误的具体情况,帮助您快速定位问题。当您开启资源测速时,SDK 将会自动监听页面资源加载情况(耗费时长、成功率等),并在不影响前端性能的前提下收集前端的性能数据,帮助快速定位性能短板,提升用户体验。
低成本
前端性能监控支持 Web 和小程序的前端真实体验监控服务,学习成本较低,只要有过基础的前端知识,就可以放心的使用。
产品功能
日志上报
前端性能监控支持开发者上报任意数据到前端监控平台,包括一般性日志、自定义事件、自定义测速等。用来满足前端开发者日志收集的诉求。
错误收集
前端性能监控针对浏览器执行 JS 代码报错、接口信息报错、资源加载异常、Promise 异常等报错都有 SDK 进行主动收集,开发者只需接入 SDK 就可以实现所有错误收集的功能。
性能数据
前端性能监控包括众多页面性能数据,其中包括首屏耗时、建立 TCP 连接耗时、TTFB 耗时和 SSL 耗时等。除此之外,最新的 webvitals(谷歌针对网页加载速度和体验所提出的一套指标) 标准已支持页面性能三大核心指标等数据,也可进行数据采集和上报。
页面访问
前端性能监控支持查看页面访问 PV(页面访问量)和 UV(页面独立访问量),通过运营商、访问来源和访问地域等维度,实时了解并分析用户访问情况。
资源测速
前端性能监控支持资源测速,包括图片加载耗时和 CDN 资源耗时等。开发者可以查看某个页面下具体使用了哪些资源,每个资源的耗时情况等信息。同时前端性能监控支持对地域信息统计,ISP 信息统计等功能。
接口测速
前端性能监控可通过接口测速统计页面上所有调用接口的信息,包括接口耗时和状态码统计等信息。同时前端性能监控支持对地域信息统计和 ISP 信息统计等功能。
智能告警
前端性能监控支持错误告警、页面耗时告警和性能数据告警等功能。
应用场景
提升用户体验
前端性能监控通过页面报错、页面加载、接口成功率等关键性能指标变化趋势,实时了解用户使用情况。基于关键性能指标变化趋势和用户健康度评分,改善用户浏览页面体验。
故障定位
前端性能监控支持 JS 代码报错,接口信息报错、资源加载异常、Promise 异常等错误主动收集和慢页面详情监控(首屏加载耗时、请求响应等),通过页面加载瀑布图、Core Web Vitals(谷歌提出的三个网络性能指标的视图)、地区视图等多维度关联分析异常指标,定位异常原因。
性能优化
前端性能监控支持地区、运营商、网络、设备/机器类型等多维度视图。您可以结合用户特征和多维度视图进行对比分析,实现有针对性地优化 Web 应用性能。
如何设计监控告警的维度?
宏观告警更加关注的是:一段时间区间内,新增异常的数量、比率是否超过了阈值;如果超过了那就进行告警;微观告警更加关注的是:是否有新增的、且未解决的异常;
总结:
监控行为可能涉及到一些隐私策略问题。不同的产品,其隐私策略也是不同的。对于开放性大众产品,针对单用户的行为进行分析,很可能能得出针对该用户的一些预测行为,这对商业公司的吸引力非常大。但是我们要知道,互联网不是法外之地,我们在实现能力的时候,应该尊重和保护用户隐私。针对隐私问题,SDK框架应该提供可扩展的能力,遵循“开放封闭原则”,让开发者可以自己根据产品需要,有可以与用户交互的过程,而非一股脑全部封装,
总之,隐私策略是产品策略中的重要一环,也是目前我们国家重点关注的一个方面,任何与监控相关的设计都应该慎重考虑。