August 6, 2016
最近要做移动端的监控,于是先调研了市面上的产品,调研的产品是 new-relic、appdynamic、点评的 CAT。
目标
移动端监控的目标是监测终端用户的体验,据此做出相应调整,持续优化用户体验。影响用户体验的项目包括:
- 产品本身的功能和产品设计好用不好用。这个靠 AppStore 评论,社交平台,用户调查等得到反馈。
- App Crash。严重影响用户体验。
- 产品 Bug。
- 交互特别慢。
- 交互失败。
数据采集
为了达到以上目标,需要采集以下数据:
- 用户使用情况。例如App 打开量。需按不同维度进行分解。
- Crash。Crash 数量,该数据需要按多维度分解。Crash 时的上下文,以解决该 Crash。
- 用户反馈的 bug。三个产品都未提及。运营和开发都需要,响应用户反馈。
- App 页面测速。主动采集详细的数据,诊断网络问题。
- 网络请求。网络请求的数量、响应时间、错误数。网络请求错误一般细分为 HTTP error 和 network error。对以上三个值,需要按多维度进行分解之后的数据(例如分地区的请求量)。需要回答:如果网络请求慢了,为什么慢;如果网络请求出错了,为什么出错。为此,需要 snapshots,捕获一次网络请求详细的上下文数据,包括 header,userid 等,以及 Request-id,以和服务端的数据进行关联。
- 用户交互。该互动的次数,耗时。
用户交互
相当于服务端的接口,网络请求
相当于是接口的依赖。移动端特殊的地方在于:
- 网络的重要性大大增加。用户和服务器之间的网络是公网,相对于内网来说不太可靠,出问题的可能性更高,在移动端监控中占的比重较大。
- 维度较多。移动端的维度包括:网络类型(wifi or 3G)、应用版本、OS 版本、设备类型、地区、运营商等。对于大应用,可能还需要按业务进行分解。大多数数据都要分维度统计。
移动应用维度
移动应用监控很多数据都是基于以下维度:
- 返回码
- 网络类型(wifi、3G)
- 应用版本
- 平台(OS version)
- 地区
- 运营商
- 设备
例如在 wifi 条件下的请求量,在 wifi 条件下,ios 7 的请求量。以后所指 移动应用维度
都是指这里说的。
可视化
Overview
两种思路,一种是 new-relic 的,比较清晰:
- Crash 次数
- 响应时间分布或曲线
- HTTP/Network 错误数、错误率
- APP 启动数
- Most Frequent interactions。表格。展示交互的次数、响应时间、HTTP 请求数。
另一种是 appdynamic 和 cat 的,把响应时间和成功率按不同维度进行对比。
网络请求
- 网络请求按 URL 分类。每种网络请求的请求量、HTTP 错误数、网络错误数、网络请求时间、Transfer size(分为发送和接收两个方向)。
- 分类后网络请求和后端响应时间关联。
- 网络请求 Snapshot。抓取慢网络请求、网络请求错误的单请求上下文。确保每隔一分钟有个详细请求被抓取。统计和单请求详情数据相结合。
- 按移动应用维度进行对比。对比项目包括请求数、成功率、成功延时。可以这样对比,例如在 wifi 条件下,各应用版本的响应时间差异。或者不对比,显示 wifi 条件下总体的响应时间。
CAT
用一个页面实现了两个功能,很好的设计。
- 分布。对比展示的是曲线。分布展示的是饼图。主要是请求量的分布。包含维度和对比一样。
- APP 页面测速。需要分网络类型、应用版本、平台、地区、运营商测量某页面某加载阶段耗时。然后进行对比。
日报
CAT
包含数据的日统计。日统计相比于实时数据更宏观,更反映整体情况:
- API 访问日报。请求量、成功率、成功延时。支持限定每种移动应用维度下对应的值。
- 总体统计。某业务整体的访问量,后端访问量,平均延时,后端平均延时,平均成功率,平均发包,平均回包。