跨平台应用开发进阶 (三十八)uni-app 前端监控方案:基调听云 APP 探究
一、前言
在前期博文《跨平台应用开发进阶(三十七)uni-app前端监控方案 Sentry 探究》中讲解了Sentry
, Sentry
是一个开源实时错误监控项目,支持包括 web 前端、服务器端、移动端及其游戏端等多端配置。考虑到目前存量产品在用监控方案听云,故弃用 Sentry,探究听云应用详情。
二、产品介绍
基调听云App移动应用性能管理产品采用 SDK 方式实现对 App 的崩溃、卡顿、超时等性能问题进行采集,并能对真实用户体验数据进行量化分析,实现版本迭代过程中的用户体验优化。
基调听云 APP SDK 通过在指定方法中嵌码去采集方法中的数据。您可以通过报表服务器查询各种方法的数据和调用次数。
具有如下功能:
数据采集
HTTP/HTTPS 协议数据收集
崩溃/卡顿异常数据收集
事件性能数据收集
视图性能数据收集
进程内存和 CPU 使用率
用户体验分析数据收集
网络数据
应用响应时间
DNS 解析时间
TCP 建连时间
SSL 握手时间
首包时间
访问量
SDK 也可以采集线程堆栈,数据库、自定义参数和 HTTP 请求参数。
用户体验分析-应用启动数据
启动耗时
启动次数
启动期间的崩溃、事件性能数据
用户体验分析-用户操作数据
操作耗时
阻塞耗时
操作次数
操作期间的崩溃、事件性能数据
用户体验分析-页面加载数据
页面交互耗时
页面展现耗时
页面加载期间的事件性能数据
2.1 工作原理
2.1.1 Android 平台工作原理
基调听云 SDK 通过虚拟机技术在应用打包编译过程中对应用采样点(HTTP 标准协议和 HTTPS 标准协议)进行嵌码操作,该操作会在协议类库方法前后部署基调听云 SDK 探针,该过程不会影响用户代码逻辑。
每当 App 启动时,基调听云 Agent 开始工作。应用有网络请求时,通过之前部署的基调听云 SDK 探针以一定的采集频率来采集数据,并对采集的数据进行汇总后,上传到服务器(报表展现)。
应用退出到后台或用户关闭 App 时,基调听云 Agent 停止工作,以便减少不必要的流量消耗。
Android SDK 性能消耗应用 App 嵌码后体积增量为 370KB 左右。
2.1.2 iOS 平台工作原理
利用objective-c
的runtime
特性,通过Method swizzle
技术,可以实现在运行时替换 selector
对应的方法实现,达到给方法挂钩的目的。也就是说,嵌入基调的 SDK 后,在程序启动之初,基调的 SDK 会对相应的方法执行swizzle
操作,从而在调用一个被swizzle
过后的函数时,将会首先调用 SDK 相应的自定义函数,在 SDK 的函数中会执行一些数据采集的操作,然后 SDK 的函数会再调回原函数的实现,不会影响原程序逻辑.
iOS SDK 体积增量三种指令架构增加 2.71M
Armv7 增加 0.81M
Armv7s 增加 0.81M
Arm64 增加 0.99M
三、项目集成
集成听云至项目中,不同平台采用不同的集成方案(对于集成实施者不友好)。其中,android
采用sdk
集成方式实现,ios
采用uni-app
官方插件形式集成。
3.1 Android 集成
参照集成文档《TingYun_SDK_Android_Gradle_2.15.6_3.0_uni-app》可完成集成操作。
有关Android
本地组包操作,详参博文《跨平台应用开发进阶(九) :uni-app 实现Android原生APP-本地打包集成极光推送(JG-JPUSH)详细教程》。
APP 启动后可在 logcat 处通过 NBSAgent 筛选出如下信息,即代表集成成功:
3.2 iOS 集成
参照探针集成文档《iOS集成-基调听云App性能监控》,可完成探针集成。
参照探针部署文档《iOS集成听云uni-app插件》,可完成探针部署。
探针引入 js 文件tingyun-uni-app-agent.js
下载地址《iOS集成听云uni-app插件JS资源文件》。
探针部署 uni-app 插件tingyunAppUniPlugin
下载地址《iOS集成听云uni-app插件引入》。
四、答疑解惑
4.1 APP 各项监测指标是否需要特殊设置(数据埋点)或调用接口实现?
主要监测指标:
用户体验全面检测:分析真实用户使用过程,覆盖应用全生命周期(包含:应用启动、页面展现、用户操作三大核心场景),助力业务人员快速准确了解用户体验。
CDN 质量监测:基于核心技术,自动识别 CDN 厂商信息,提供详细的 CDN 节点分布并支持全局过滤,通过网络时间、可用性和下载速率综合评估 CDN 质量,助力运维人员了解 CDN 节点分布、匹配策略和综合质量。
网络探测分析:通过探测应用使用过程中的网络波动,提供网络延时和丢包率两大核心指标,让运维人员能够区分判别客户端网络环境较差导致的网络错误。
移动拨测:基于真实用户下发拨测任务,支持即时监测和 CDN 对比分析两种场景,并能配置立即执行、请求错误后执行和请求结束后执行三种不同条件,针对地域、运营商、接入方式和 VIP 用户四种维度下发任务。协助运维人员即时了解网络故障,进行 CDN 选型对比分析。
卡顿异常分析:基于真实用户体验,分析主线程阻塞时间达到 5 s 的严重卡顿问题,提供卡顿过程中的五个调用栈,协助研发人员精准定位卡顿发生的原因。
端到端全链路追踪:提供客户端到服务端的全链路追踪,当前端响应耗时超长时,能够通过对应的单样本数据直接追踪至后端应用,帮助运维人员分析前端响应耗时超长是否是由于后端服务响应较慢导致。
4.2 Android 如何给用户打标?
ios
集成中应用以下方法实现用户打标:
android
用户打标方式如下:通过 SDK 集成方式实现。
通过以上方式集成听云之后,重新编译并发布新 App。发布后 5 分钟左右,即可在基调听云 App 看到该 App 的性能数据。
更详细的安装说明,可以在基调听云 App 控制台阅读和下载相关安装说明文档。
五、拓展阅读
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/dc5efe2100adda00f485f337e】。文章转载请联系作者。
评论