阅读 1346

聚焦用户体验,重塑移动端监控体系 - 阿里UC研发效能提升实践

本文首发于知乎《阿里UC亿级用户APP的崩溃治理实践》,搬运转载请注明出处,否则追究版权责任。

前言

今天给大家分享的是 阿里UC的移动应用线上监控体系建设。 阿里UC有多款APP,亿级的用户量, 怎么通过线上监控体系,保障APP质量和用户体验,提高研发效能,这是今天分享的重点。

这里首先介绍UC岳鹰平台在阿里集团内的落地效果;下文会具体介绍岳鹰的实践历程。

第一点,从平台指标和用户体验看,我们解决了APP稳定性的一些难题,把UC以及体系内的APP长期保持 「千分之一」 以下的崩溃率,这不是一个标准,但是UC APP需要达到的一个效果(指标是需要长期治理的)。

第二点,分析效率大幅提升,以往问题发现可能延时5-10分钟,业务高峰期可能更长,到现在分钟级别,并且提供了大量分析定位功能,都大大提高了分析效率。

第三点,中台效应,岳鹰在内部复用于50+的APP,包括UC,以及集团内钉钉、支付宝、淘宝等头部APP,技术基建的效果很明显。

岳鹰全景监控的业务大图

为什么需要移动应用线上监控?

移动互联网在过去十几年的发展非常迅猛。在移动互联网“天下武功,唯快不破”这种环境下,我们几乎每天都面临着“尽快上线,越快越好”的紧迫感,研发迭代非常快。同时为了兼顾APP质量,我们会在研发过程中进行测试、灰度等,来保障质量保障手段。

简单来说,就是「既要迭代快,又要质量好」。而实际上,保障APP质量和体验比我们想象中的更难,而APP稳定性一旦出现线上问题,影响范围非常大,修复成本非常高。

  1. 承载在移动APP上的业务也越来越多,APP形态越来越复杂
  2. 特殊的国情,Android厂商林立,环境复杂度攀升,线上环境的复杂度也在增加
  3. APP线上问题的修复成本非常高,影响范围很大

解决思路

基于这样的背景,我们在思考,能不能在移动APP出现崩溃等问题的时候,把日志上报给到服务端,让服务端做一些数据分析的事情,从而更快的把问题预警出来; 也通过数据分析,来提高开发者分析定位问题的效率。

如果从长期来看,还能给APP性能体验优化,指导一些方向。

这也是我们做线上监控平台的初衷,快速发现问题,高效定位问题。这个平台我们叫做 「岳鹰全景监控」 平台。

阿里UC岳鹰全景监控的实践过程

一般而言,一个实时监控平台大致包括四个阶段:日志采集上报、日志清洗提取、数据分析统计、数据展示。 下文会主要会从这4个方面来展开介绍岳鹰平台的实践过程。

SDK采集上报

SDK的采集上报的核心,是要完整暴露APP的线上质量问题,呈现真实的用户体验。

我们主要分三个事情去做:

第一,确定我们要监控什么,建立APP质量指标体系;

第二,数据采集的准、全;

第三,除了常规的稳定性问题,在影响用户体验的稳定性问题里面去深挖。

建立指标标准

在建立指标体系方面,岳鹰平台是覆盖Android、iOS双端的核心质量指标,在我们做的一些业界调研里面发现, 用户遇到最多的问题,就是崩溃、卡死/ANR;另外就是大量的业务逻辑异常。

通过这些细分的崩溃率指标,我们能够评估APP问题会影响多少用户,它的严重性,解决的性价比;最终给APP建立一个合理的质量指标基线。

采集完整、详细的日志

在采集日志内容方面,从开发者的角度肯定是越完整越好,越详细越好。

SDK具体捕获的内容下面表格可以看到,这里想特别分享的是,我们对SDK捕获的日志内容做了一些丰富,特别是一些针对性的日志信息;这里我们叫它场景化信息。

举个例子,在小说、下载等场景,一般会有比较多文件读写的逻辑,这种情况下是比较可能出现文件句柄泄漏的问题,这时候日志提供的文件句柄信息就是一个关键信息了;另外像maps信息,在定位低端机型的OOM问题的时候,比较实用。类似这样的场景化信息,非常多。

Android ANR的捕获

常见的ANR日志收集方案,以往大部分方案都是通过读取系统生成的traces日志做到的。 Android系统每次发生ANR后,都会在/data/anr/目录下面输出一个traces.txt文件,这个文件记录了发生问题进程的相关信息和线程的堆栈信息,通过这个文件我们就能分析出当前线程正在做什么操作。

但是,谷歌在高版本(5.x)已经把读取trace日志的权限回收了,但ANR这又很影响用户体验的问题。那怎么捕获ANR呢?

核心做法是在SDK层注册signal catcher来监听SIGNAL_QUIT事件,获取anr信息,具体原理参照下图。

实时的分析链路

前面把SDK的采集讲完了,那下一步就是需要把这些数据上报,利用起来。

我们可以看到,从问题发生,到采集上报到数据展示,是一条比较长的链路,中间有比较多环节。 这里任何一个环节的效率问题都会影响我们发现问题的效率。

所以,为了第一时间感知APP上发生的问题,我们期望能够打造一条实时的分析链路。 而且,从技术基座的价值去看,这个链路应该是可以复用的。

在打造实时的分析链路的时候,主要解决3个问题。

  • 第一,SDK侧,需要解决设备侧、网络侧的复杂度,保证稳定实时上报;
  • 第二,平台侧,需要具备大数据统计分析的能力;
  • 第三,符号化,代码还原效率,这个后面会展开细讲。

实时计算平台架构

在实时分析处理数据的方面,这里简要介绍下岳鹰的整体架构;不展开,有兴趣的同学可以私下交流。

智能聚类

智能聚类,指的是对日志信息进行提取,包括崩溃堆栈、机型、版本等关键信息提取,这些对于用户快速分析规律找到问题根因非常重要。 另外就是代码还原。

智能聚类

智能聚类这里重点讲 堆栈维度聚合。

第一个,堆栈维度的聚类,核心是崩溃堆栈提取算法,要做到的效果是,把同一个崩溃问题的日志,都聚类到一起去。要达到这样的效果我们解决了哪些问题呢?

一个崩溃堆栈的主要信息有2部分,崩溃点的类、方法、行号,以及调用方法的类、方法、行号。 由于版本迭代的影响,崩溃代码的行号是会经常变化的,带行号来做崩溃堆栈聚类会很分散。 另外,同一个崩溃点可能是在不同调用入口出现崩溃的,这对于一些底层的工具框架分析不是很方便。

代码还原

前面讲的是堆栈提取,那还原是怎么做的呢。主流的符号表都是百兆级别,而UC浏览器使用的内核机器符号表几百MB,部分游戏的符号表甚至超过1GB,这给代码还原带来很大的效率挑战。

岳鹰平台通过分布式符号化+键值对加密存储,提高安全性,符号化效率提升10倍以上,还原成功率和准确率高达99.99%。

多维分析

前面我们把数据都分析好了,接下来就是要呈现给开发者分析使用。这里我们希望能沉淀出一个问题分析模型,我们分为 时间维度,代码分析,多维钻取来讲。 接下来我们来看怎样通过这个分析模式,来解决实际场景遇到的问题。

第一时间发现问题

通过岳鹰的实时大盘,我们可以第一时间发现线上问题,这里待会后面预警也会讲。 岳鹰平台提供分钟、5分钟、小时、天级别的趋势数据;图上的实时大盘是分钟级别的统计。

快速定位TOP问题

在发现问题之后,接下来要做的就是找到原因,是什么崩溃导致指标波动。 这里我们按照影响用户进行TOP问题排序,可以最直观一目了然找到严重问题,逐个解决。而且也在TOP问题列表附上近7天趋势,便于观察。

代码分析,直切要害

确定问题之后,接下来就是分析原因了,看代码就是最直接的办法了。 这里主要分享一点,岳鹰我们对C++场景的崩溃日志做了优化,支持C++行号的展示,以及inline函数的符号化。

趋势分析,找准问题

前面讲的是一些需要快速或者紧急解决的问题,而实际上有些问题是比较长尾的。 这些问题通过分析趋势,可以找到变化的时间点,并且通过对比,找到影响因素,例如某次发版新功能引入崩溃,厂商发布新ROM带来兼容性问题等。

多维钻取,分析共性问题

平台还支持多维度钻取,分析共性问题。 这个主要是考虑,有些崩溃问题是在指定机型、系统版本下面才会出现的,所以维度统计也是一个常用的分析手段。 另外,还可以逐个选中维度,层层分析。

岩鼠云真机,一键复现问题

前面讲到,找到共性的机型、ROM等,那么下一步就是在对应的设备上重现,通过logcat,debug获取更详细的错误信息。 而Android机型非常多,iOS本地调试效率很低,通过【岩鼠云真机平台】,可以快速找到机器。 包括,修复问题之后的回归验证,也可以通过真机平台进行。

智能预警

前面讲的分析过程,基本都是靠人工的方式去发现问题的。

经过一段时间积累,我们开始思考,我们分析问题的经验能不能沉淀下来,能不能更自动,更高效的进行分析和预警? 实际场景里面的应用有 极速自动预警 等功能。

对比常见的预警模型,岳鹰全景监控支持「自动通知新崩溃」,「海外对不同国家设置不同规则」等。

另外,我们发现大部分业务其实并没有配置预警规则的经验,我们将历史积累的预警案例,结合算法形成波动提醒,

自动为业务设置预警规则,业务只需要开启一个按钮就享用预警能力。

远程日志

在我们的实践过程中还发现,有些线上问题是比较难一次性解决的。 一个是单点用户反馈问题,另外是线上反复的问题。对于这种场景,我们提供「远程日志」,帮助开发者获取更详细的日志和用户操作,解决缺少排查线索的痛点。

面向未来的监控体系

前面介绍的是APP监控的平台建设,在当前技术快速发展的情况下,新技术层出不穷,以nodejs、flutter、weex为首的大前端,以小程序为代表的新流量入口,都存在着新技术的流量红利。

岳鹰全景监控怎么支持这些技术形态的监控,怎样帮助业务更快抓住这些技术红利?

UC岳鹰的核心理念是平台化的思路,结合闭环、全链路、大数据的搭建方式,建立一个实时高效、可复用的监控平台体系;通过标准协议、数据开放,支持更丰富的技术形态。

除了移动APP,岳鹰目前还支持H5、小程序、Weex等监控,都可以快速接入岳鹰,享用实时监控分析的能力。

>>> 岳鹰全景监控 <<<

经过1年左右时间的不断打磨,阿里UC出品的 岳鹰全景监控 已经对外开放,到官网可以领取免费体验套餐,点我前往领取

技术交流、第一时间掌握产品动态,欢迎联系我们~

联系微信小助手(微信号 effirst-assistant)

加入钉钉群讨论(群号21964256)

关注下面的标签,发现更多相似文章
评论