任何应用监控技术的重中之重通常是针对终端用户的基础架构或组件进行监控。智能工具是测量用户体验的理想工具,因为它们理解应用的运行情况,会自动基准化性能表现,在几乎不产生干扰的情况下解码并建立应用子组件间的关系。
其实,在测量用户体验时,有两种不同的性能监控方法:
- 模拟监控——供应商提供远程(通常是全球的)基础设施,可定期访问网站并记录每次运行的性能数据。测量的流量并非实际用户所产生的,而是用于收集页面性能时生成的。
-
真实用户监控——供应商提供嵌入到每个页面的代理(Javascript 脚本),报告当前页面的每个请求的加载数据。顾名思义,这种监控技术主要观测实际用户的交互。
由于这两种方式事实上是互补的,所以没办法简单的说哪种更好。Eric Shepherd (Gilt 的前端工程师)归纳了这两种技术所具备的优势:
“真实用户监控和模拟监控都能从不同角度对应用性能进行监控,且具有不同的功能和针对性。真实用户监控帮助我们理解应用的长期趋势,而模拟监控可以诊断出并解决短期的性能问题。”
在此,笔者对两种监控方式做了一个对比,下面向您介绍两种监控各自的特点:
模拟监控
本质上,有了模拟监控(也称为主动监控),用户可以指定以下监控项目:
- 监控哪一个 URL(网站或是服务器)。
- 监控的类型(HTTP, Ping, API 还是其他)。
- 监控此 URL 的频率。
- 如果出了问题,向谁发送告警。
- 告警的方式。
这是模拟监控测量网站性能的方式(图片来源:Cloud Test)。
模拟监控解决方案在告警网站可用性方面颇有成效,你可以在访客到达网站之前了解网站出现的问题。如果我们的系统检测出网站宕机,你可以使用各种各样的工具,分析出故障的组件,尽快修复故障,使网站平稳运行。
以下是模拟监控的几个特点:
1.在控制的环境下进行监控
模拟监控允许用户通过一系列的控制变量(地理位置、网络设备、浏览器、高速缓存或非高速缓存),详细地对网站或应用性能进行监控。同时,它还能帮助用户屏蔽掉真实用户监控产生的海量噪音。其结果是用户可以及时地发现延迟和宕机时间,从而科学地诊断并隔离性能问题的根源。
2.了解第三方的性能
与真实用户监控不同的是,模拟监控工具可以呈现供应商生成的网站访问的详细图表,这些图表显示了整页的资源加载时间,允许用户将每一毫秒的时间对应上相关的网页内容。例如,用户可以深入了解到广告供应商切换、内容交付或采用新营销分析插件对性能的影响。
3.基准测试
启动模拟监控不需要任何安装或代码嵌入。随后,用户可以利用模拟工具有效地监控竞争和一段时间内针对关键竞争者的有效基准性能。
4.开发的每个阶段均可测试
模拟监控可在预生产阶段对网站和 web 应用进行测试。预生产测试结果可用于性能基准,并设置应用运行的警报阈值。
5.7×24小时监控
如果非工作时间或其他低流量周期出现问题,模拟监控可在对用户、收益和品牌效应产生负面影响之前,帮助你快速识别、隔离并解决问题,将损失降到最低。
6.跨地域分析基线和性能趋势
结合模拟监控可以设置基线测试,以还原终端用户访问应用程序的方式。这些基线测试可以在测试多个浏览器和设备访问应用的同时,监测关键事务和地理位置等信息。
真实用户监控
模拟监控通过数据中心的服务器连接你的网站,而真实用户监控却能获取真实用户的访问数据。因此,后者也被称为被动监控。
使用真实用户监控时,你需要指定监控的网站,并将一小段代码插入该网站页面的 HTML 内。这些步骤都很简单快速,配置完毕之后,我们就会开始收集网站的用户数据。这些数据来自网站的每一个页面,而模拟监控只能收集指定的 URL 的数据。
尽管模拟监控优点很多,但有些事情它还是无法告知你。这也是为什么要使用真实用户监控的原因。真实用户监控不仅能提供有关网站性能的更详细数据,还能展示用户从打开网站开始的真实体验。这包括连接类型、浏览器、用户使用的访问设备、他们的地理位置等等。你能看到每个访客的聚合数据,而不是有限的样本数据。
换句话说,模拟监控告诉你访客可能的网站体验,而真实用户监控让你了解真实的用户体验。
上图展示了真实用户监控服务展现网站性能的几个指标——AjAX性能、页面性能、Apdex等(图片来源:Browser Insight)。真实用户监控会加载整个网站(HTML, CSS,脚本,图片等),而不单单是 HTML。这使你得到更多的网站性能数据,对用户体验的了解也更为深入。
以下是你使用真实用户监控之后,可以了解到的信息:
- 实时访问:单个页面的加载情况。
- 性能趋势:加载时间的变化趋势,选定时间范围,了解这段时间内的加载时长变化。
- 地域表现:来自不同国家的用户在访问网站时的体验差异。你可能想专门改善某几个国家的用户的访问体验。
- 移动 VS. 桌面:查看通过移动端和桌面端进行访问的用户比例,以及各自的访问体验。
- 性能长尾:不仅查看最快的加载时间,也能查看那些遭遇性能缓慢的用户情况。
- 加载状态:详细展示页面的加载情况,从用户点击链接到加载完毕,时间都耗费在哪些步骤。
- 用户满意度:访客是否满意或沮丧?列明哪些性能表现可归为令人满意、可容忍以及令人沮丧。让你快速了解用户总体的满意度。
有了这些真实用户数据,一旦网站出现性能问题,你可以准确找到问题源头。在这种情况下,真实用户监控还可做为模拟监控的预兆,指出应当深入调查的组件。
总而言之,真实用户监控是衡量网站性能的最佳手段,而模拟监控是检查网站是否可用的最佳方法。同时使用这两种工具,意味着你的网站能为用户提供最优的访问体验。
Cloud Test 是基于云技术的实时监控系统,能够帮大家实时监控网站性能,监控CDN、DNS、API等第三方服务提供商的可用性,实现应用性能及时监测及时报警。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客