自最终用户体验监控被定义为应用性能管理的五大功能维度之一后,真实用户体验监控成为众多 APM 厂商所追逐和标榜的功能,特别在移动应用的性能管理方面特别如此。博睿 Bonree 是国内有丰富经验的应用性能管理提供商,他们提出了主动式监测和被动式监测,对真实用户访问体验的监控有着深入的看法。博睿 CTO 孟曦东接受了 InfoQ 记者的采访,回答了如何监控真实用户访问体验的问题。
受访嘉宾介绍:
孟曦东,博睿创始人、博睿董事兼 CTO,全面负责博睿的战略规划和运营管理。1998 年毕业于北京工业大学自动化专业,随后前往中国航天部进行为期 2 年的技术深造,之后进入千龙网,后升任 CTO。2008 年离职创立博睿。
InfoQ:主动式监测和被动式监测分别指什么?分别适合那些需求和阶段?
孟曦东:主动式监测是指通过远程控制监测点发起的监测,主动监测的在发起监测之前就可以控制监测点的部属环境,所在位置,监测点性能等等,所以主动性测试强调的是对监测点的可控性和监测点的针对监测需求的匹配度。
而主动监测又可以控制监测发起的时间频率,适合:运维日常监测;开发应用投入生产环境过程中的调优测试;以及业务部门采集不同场景地域的用户感受基准测试。主动式监测适合日常连续高频监测,适合对某些应用集中监测,适合给具体技术部门和业务部门提供更精准的指标量化用。(如:NOC 性能和可用性报警、运维网络监测、开发适配、业务推广中用户体验性能调查等)
被动式监测即对实际产生的用户数据进行的监测,被动式监测涵盖了很多用户行为数据并且拥有一定的偶然性,用户覆盖随机性强,用户产生监测数据的随机性强,参杂监测点复合应用性能影响,并取决于用户对应用和网络熟悉和设置水平等。被动式测试适合对业务行为数据和性能数据有结合分析的长期趋势分析的需求,适合制定应用开发策略的佐证。(如:取消对那些安卓低版本的支持)。适合中长期监测提炼用户趋势用,适合做用户不可用报警用。
InfoQ:您认为主动式监测在 APM 中的地位和角色是怎样的?
孟曦东:主动式监测是现有互联网企业所必须的监测服务。
由于互联网技术的开放性,被动式监测服务本身对于一些互联网公司来说都是可以 DIY 的小 Case。但广泛的、分布式的、多维度的主动式监测,需要布置监测点,这对于公司的技术团队来说是难以独立解决的,也是主动式监测第三方公司不可或缺的价值所在。任何大的互联网公司单独拥有的用户数量和客户端数量,都可能远远超过现有市场上所有做主动式监测厂家的监测点总和,但市场上没有一家公司去愿意去建设这样一个主动式监测点网络,只为本公司监测去服务。道理很简单,一个复用率不高的主动式监测点网络,是无法保证有效推进自身优化的(相对第三方监测),权威性也无法得到认可,而且其成本和利用率都无法做到最大化。而且如果和互联网公司其它业务叠加复用,又会对数据质量和监测点分布造成影响。
是的,被动式监测实施的小伙伴为什么不存在这个问题呢?监测目的不仅仅是拿到现有数据和历史数据对比趋势,另一方也要是现有竞争最重要的一环,企业的应用需要监测出比别的同类应用的性能对比。而被动式监测由于只能对使用应用的企业自身客户做性能数据收集,无从对比。又且被动式监测都是捆绑在应用中的客观的说是辅助功能,核心功能是应用价值本身。
当然从技术角度来说,主动式监测得到数据从技术参数指标上更丰富,如:底层命令 traceroute、Dig、客户端设置参数维度用的 localDNS、CPU、内存、I/O 等等都是被动监测无法提取的。而被动式监测也有规模和业务方面的优势,能表达出更多业务实际分布等技术指标,如用户使用那些系统版本、浏览器版本等。
InfoQ:能再谈谈被动式监测吗,它相对主动式监测有什么缺点?
孟曦东:被动式监测的最主要缺点是对监测数据的利用会带来真实挑战,这里的真实挑战主要来自数据分析的时效性和数据采集的损效比。
数据分析的时效性是指当数据采集方式和采集指标颗粒定义好后,用户的全量数据会随着真实业务发生不均匀的产生,而面对大数据分析和计算是摆在现有应用运维者面前的一个潜在困难。如果自行进行即时分析运算需要内部有强大的运算服务器集群,采用云的方式部属需要购买额外有弹性的云计算资源。现有国外大型厂商解决这种方式也有两类,一类是比较现实的不全量分析,选取有代表性的数据做权重分析。(这里面权重如何选取,和数据筛选都是衍生课题),另一类是全量甩给专业国际云计算厂商,购买云计算服务,但其成本和受益很难配比。
数据采集损效比,即任何数据采集和传输都要对最终用户网络、存储、内存等产生额外性能损耗,这种损耗比例,也是一方面,就像我们经历传统的互联网页面传输占用很少字节的 Javastrip 提取用户行为或其他功能,但其累计会造成浏览器崩溃的风险加大。
InfoQ:能否介绍一下你们的主动式 APM 页面监控中的 API HOOK 技术?如何保证监测数据无杂音?
孟曦东:API HOOK 分别为 Windows、Android、iOS 平台三部分,目前我们是 APM 业内唯一在移动平台采用此技术的公司。
此技术通过监控目标进程的生命周期,对 APP 的所有进程的调用系统网络 API(native 层)的过程进行拦截处理,达到收集和汇总数据的目的。在 Windows 上,采用独立进程执行页面监控,保证除被监控页面通信数据之外,不会混杂有其他网络通信数据;在移动平台上,我们通过对 APP 进程名进行包名过滤,排除其它非本 app 的进程,可以保证根本不会采集到无关进程的网络数据,也就不会有数据杂音。
InfoQ:你们的移动 App 性能监测有那些监测角度?移动 App 有哪些关键性能指标?
孟曦东:我们针对 APP 监测可以分为三个角度:首先是为应用开发部门服务的针对 APP 的遍历型功能适配测试;其次为应用运维部门服务的针对 APP 网络性能和主机性能监测等技术运维指标监测;还有为业务运营部服务的通过 SDK 嵌入代码方式取得综合全量用户体验数据。
移动 App 性能目前开始被广泛重视,初期应用方更关注可用性类指标,尤其堆栈信息,网络传输效率,接口监测,内存释放速度等都是现有客户主要针对监测的目标。堆栈信息主要为分析 APP 崩溃做监测服务;网络传输效率主要通过 DNS、建立连接时间、首字节时间、核心应用功能表达时间、等来展现;针对接口监测主要是满足现有 APP 运营中经常会调用第三方接口实现业务的模式。还有很多用户感受数据如主功能实现时间等,都是从业务角度衡量用户体验的数据,其趋势为应用性能管理(APM)提供了调优方向。
InfoQ:目前国内 APM 领域逐渐升温,能谈谈您的看法吗?
孟曦东:很欣喜的看到国内 APM 市场蓬勃发展,过去我们为客户服务时,都是客户有了监测需求,然后我们来推出相应监测服务或功能。而今天很多国内 APM 后起之秀对 APM 市场的潜在需求不断尝试,并且也带来了一些国外比较先进的 APM 监测方式。
我认为国内 APM 领域是一个非常广阔的市场。面临中国人口红利减弱,技术不断和国际接轨,新的应用模式不断创新。带给应用性能的难题更加复杂,解决的价值也更大,很多应用运营者已经感受到市场增长的乏力,着手避免用户流失,或直接通过更优异的性能去争取客户。于是我们可以看到,主动式监测已经日渐成为现有网络运维和开发调优的标配。
针对后端监测领域的 APM 很多厂商,也在通过嵌入标记和植入探针的方式进行函数效率和接口传输效率收集等等,我们也很期待有成熟的产品给市场和用户以信心。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。
评论