Amazon CloudWatch RUM 现已支持移动应用监控
我们很高兴地宣布 Amazon CloudWatch RUM 已支持移动设备。这意味着 AWS 的实时用户监控功能现在扩展到了 iOS 和 Android 应用程序。过去仅用于 Web 应用程序的监控工具现在也可供移动开发者使用。
随着移动设备在日常生活中变得越来越重要,确保移动应用的最佳性能和用户体验也变得前所未有的重要。然而,移动应用的监控面临着设备、操作系统、应用版本、网络和用户交互多样性的独特挑战。移动应用开发者持续面临着“在测试中完美运行,但在生产环境中出现性能问题”的挑战。综合测试和传统的监控方法可以提供关于实际性能的洞察,但缺乏理解最终用户体验所需的数据。这正是 CloudWatch RUM Mobile 的用武之地,它可以收集有关移动应用在真实用户手中如何表现的深度洞察指标。
面向移动设备的 Amazon CloudWatch RUM
面向移动设备的 Amazon CloudWatch RUM 帮助您在最终用户使用移动应用时,收集至关重要的性能数据和用户行为指标。通过将轻量级 SDK 集成到 Android 或 iOS 应用中,您可以捕获关于应用性能、用户交互以及影响用户体验的潜在问题的丰富信息。
要开始使用,您只需在 CloudWatch RUM 控制台中创建一个“应用程序监视器”,然后将 SDK 集成到您的应用中并部署即可。SDK 将在用户与应用交互时在后台运行,将宝贵的数据发送到 RUM 进行聚合和分析。该工具可以单独使用,也可以与 Amazon CloudWatch Application Signals 和 AWS X-Ray 等其他 AWS 服务结合使用,从而全面了解跨 Web 和移动平台的应用性能。
变革开发流程的主要优势
CloudWatch RUM Mobile 使开发团队能够从被动调试转向主动优化。通过收集来自真实用户的实时性能指标,您可以在性能问题影响用户满意度之前将其识别出来。该系统会监控屏幕加载时间,跟踪应用崩溃、Android 的 ANR 或 iOS 的应用挂起(附带完整上下文),并在一个全面的仪表板上可视化所有这些数据。
变革是立竿见影的。您无需再等待用户投诉或尝试复现 bug,而是在用户每次与应用交互时,都能获得关于他们具体体验的清晰、可行的洞察。
入门指南:强化移动监控之路
Android 应用程序监视器的设置
首先,您需要创建一个“应用程序监视器”。为此,请打开 AWS CloudWatch 控制台,导航至 Application Signals,然后选择 RUM。接着点击“Add app monitor”。
图 1: 通过 AWS CloudWatch 控制台创建应用监视器
您将看到两个新选项:“Android”和“iOS”。在“App monitor name”下为您的应用监视器命名,选择“Android”或“iOS”作为平台并继续(这里我们选择 Android)。
图 2: 创建应用程序监视器 – Android 和 iOS 选项
有几个“可选”字段,您可以根据需要启用:
- 如果希望 Amazon CloudWatch Logs 能够使用 RUM 遥测数据,请勾选“Data Storage”选项
- 如果想使用基于资源的策略控制访问,请勾选“Attach a public Resource Based Policy”
- 如果希望 X-Ray 能够使用跨度数据,请勾选“Active tracing”选项
图 3: 创建应用程序监视器 – 可选字段
点击“Add app monitor”完成。
控制台会提供一个代码片段,您需要将其添加到 Android 应用程序中以开始收集数据。代码片段提供了“手动检测”和“零代码检测”两种方式。
保存这个代码片段。我们将在本文后面的“Android 应用检测”部分使用它。
图 4: 创建应用监视器 – 手动和零代码检测的代码片段
Android 应用的检测:实现路径选择
现在应用程序监视器已创建,让我们对移动应用进行检测,以便将遥测数据发送到应用监视器。正如上面提到的,检测或配置移动应用有两种选项:零代码检测和手动检测。
首先,请准备好“应用程序监视器设置”部分的代码片段,完成本部分将需要它。您也可以在 https://github.com/aws-observability/aws-otel-android 找到代码。现在,让我们来了解这些选项。
选项 1:零代码检测(代理)
首先需要在应用的 app/build.gradle 文件中注入一些依赖项。以下是 Kotlin DSL 示例:
|
|
接下来,对于零代码配置,需要在应用的 res/raw 目录下创建一个名为 aws_config.json 的文件,并写入以下代码片段(请务必替换每个参数的值):
|
|
这样就完成了!这是初始化 Android 代理并开始收集遥测数据到 CloudWatch RUM 应用程序监视器所需的最低配置。
选项 2:手动检测
要通过编程方式配置客户端,请使用轻量级的 core 模块来替代选项 1 中的 agent 模块。我们需要在应用的 app/build.gradle 文件中添加以下 SDK:
|
|
接下来,需要在应用中初始化 AWS Distro for OpenTelemetry (ADOT) Android 代理:
|
|
最后,如果还没有 Application 类,需要在 Android 清单文件中注册这个新的 MyApplication:
|
|
之后,运行应用应该就可以开始接收发往应用监视器的遥测数据了。
iOS 应用程序监视器的设置
为 iOS 应用创建应用监视器的过程与上述 Android 应用相同。创建了 iOS 的应用监视器后,让我们看看如何对应用进行检测以开始发送遥测数据。iOS 的代码也可以在 https://github.com/aws-observability/aws-otel-swift 找到。
选项 1:零代码检测(代理)
与 Android 的“应用程序监视器”类似,您可以在“应用程序监视器”创建的最后页面获得用于检测 iOS 应用的“代码片段”。根据这些步骤,将 Swift SDK 依赖项注入到应用的 Package.swift 文件中。
|
|
当 AwsOpenTelemetryAgent 模块被导入应用时,SDK 会自动初始化。在应用包的根目录中寻找一个名为 aws_config.json 的文件(请务必替换每个参数的值):
|
|
选项 2:手动检测
要通过编程方式配置客户端,请在项目的 Package.swift 文件中添加以下依赖项:
|
|
接下来,在应用中初始化 ADOT Swift 代理:
|
|
可视化应用性能:数据转化为洞察的地方
当面向移动设备的 CloudWatch RUM 开始收集数据时,CloudWatch RUM 就会成为移动性能的指挥中心,提供多个专门的视图,将原始性能数据转化为可操作的洞察。
从显示的 RUM 应用监视器列表中,选择上一节创建的应用监视器。这将显示一个包含性能、错误、会话、指标、配置等不同标签页的仪表板,并提供按屏幕、应用版本、操作系统版本、设备、国家、地区、地理位置进行筛选的功能。
-
性能标签页:速度与响应能力的详细分析 CloudWatch RUM 控制台的性能标签页提供关于移动应用性能的洞察。这个详细视图按屏幕名称、操作系统版本、应用版本、设备、国家/地区分类显示屏幕加载时间。以前看不到的模式会变得清晰。例如,由于网络基础设施的差异,特定国家/地区的应用性能可能不同,或者特定设备型号在某些功能上运行吃力。点击图表中的屏幕加载时间数据点会在右侧打开一个诊断面板,提供与该数据点相关的详细洞察(例如最新的相关会话),并提供指向会话标签页的链接,用于对一个或多个类似会话进行故障排除。 App Launch time 视图详细分析应用的启动性能,按启动类型(冷/热)、操作系统版本、应用版本、设备、国家/地区对启动时间进行分类。这个详细视图有助于识别性能瓶颈,例如特定操作系统版本的冷启动较慢,或特定设备型号在初始化时遇到困难,从而针对影响最大的用户群进行优化。 Locations 标签页提供了应用性能的地理洞察,显示国家、地区、地理区域间的指标,揭示基于位置的性能模式。此视图有助于识别区域基础设施挑战、网络延迟问题,或用户遇到性能下降的地理区域。 图 5: AWS CloudWatch RUM – 性能标签页
-
错误标签页:调试的得力助手 错误标签页将错误跟踪转化为系统性的问题解决。它将应用问题分为三个类别:网络错误、崩溃、ANR/应用挂起。 网络错误标签页包含一个折线图,显示 HTTP 请求的 HTTP 性能指标,左 Y 轴显示故障率(HTTP 错误、HTTP 故障、网络故障),右 Y 轴显示 HTTP 延迟。这些时间序列数据点允许用户点击,在诊断面板中查看相关跨度和会话以进行故障排除。底部的表格列出了最常见的 100 个网络路由。 类似地,崩溃以及 ANR/应用挂起标签页显示每种错误计数的折线序列。底部的表格显示最常见的顶级崩溃消息/ANR 堆栈跟踪。点击错误消息会弹出完整的堆栈跟踪以供快速参考。 图 6: AWS CloudWatch RUM – 错误标签页
-
会话标签页:跟踪用户旅程 接下来,会话标签页允许您使用详细的瀑布图跟踪应用内的单个用户旅程。这些可视化精确显示了在用户交互过程中时间花在了哪里,以及用户在哪里遇到了摩擦或延迟。这种以用户为中心的视图不仅有助于优化技术性能,也有助于优化整体用户体验。 有一个列出所有会话的表格,按时间降序排序。底部有一个瀑布图,可视化所选会话的所有遥测数据。可以选择瀑布图中的每一行来打开诊断面板。如果该行是 HTTP 请求,则会有一个
traceId深层链接到跟踪控制台。对于接收到异常、崩溃或 ANR/应用挂起的 HTTP 请求,诊断面板还有一个异常标签页来显示堆栈跟踪。瀑布图中的“查看”按钮也是一种直接跳转到异常的便捷方式。 图 7: AWS CloudWatch RUM – 会话标签页 – ARN 图 8: AWS CloudWatch RUM – 会话标签页 – HTTP traceId -
指标标签页:监控应用健康状况 指标标签页提供了一个全面的仪表板,有助于可视化有关延迟、错误、数量和扩展指标的应用性能实时数据。 此标签页右上角还有一个“添加到仪表板”选项,可以将此数据导出到其他 CloudWatch 仪表板。 图 9: AWS CloudWatch RUM – 指标标签页
-
配置标签页:持续管理 最后,配置标签页便于访问应用监视器设置和检测代码片段,即使监控需求不断变化,也能轻松进行持续的管理和更新。 图 10: AWS CloudWatch RUM – 配置标签页
总结
面向移动设备的 Amazon CloudWatch RUM 将移动应用的可观测性从被动故障排除转变为主动优化,通过性能监控带来业务影响。团队可以识别并解决关键问题,例如导致区域性崩溃的本地化 bug,或影响冷启动性能的第三方 SDK 等。与 CloudWatch Application Signals 的无缝集成支持从移动用户体验到后端依赖项的端到端跟踪。
此功能在 CloudWatch RUM 运营的所有商业区域均可用。通过此实现,团队可以在保持现有开发工作流程的同时收集性能数据,利用来自应用堆栈各个层面被跟踪用户会话的指标,改变组织进行移动应用开发的方式。