使用 X-Ray 调试 CloudWatch 的 Synthetics Canary - Amazon X-Ray
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 X-Ray 调试 CloudWatch 的 Synthetics Canary

CloudWatch Synthetics 是一项完全托管的服务,使您能够使用脚本化的 Canary 监控终端节点和 API,每分钟一次。

您可以自定义金丝雀脚本以检查以下内容中的更改:

  • 可用性

  • 延迟

  • 事务

  • 链路断开或死亡

  • 逐步完成任务

  • 页面加载错误

  • UI 资产的加载延迟

  • 复杂向导流

  • 应用程序中的签出流程

Canary 遵循与客户相同的路由并执行与客户相同的操作和行为,并持续验证客户体验。

要了解有关设置 Synthetics 测试的详细信息,请参阅使用 Synthetics 创建和管理 Canary


            X-Ray 服务地图中的 Canary 节点示例。

以下示例显示 Synthetics Canary 引起的调试问题的常见使用案例。每个示例都演示了使用服务图或 X-Ray 分析控制台进行调试的关键策略。

有关如何阅读服务地图以及与其交互的更多信息,请参阅查看服务地图

有关如何阅读 X-Ray Analytics 控制台以及与其交互的更多信息,请参阅与交互Amazon X-RayAnalytics 控制台

在服务地图中查看增加错误报告的金丝雀

要查看 X-Ray 服务地图中哪些 Canary 的错误、故障、限制速率或缓慢响应时间有所增加,您可以在 X-Ray 服务地图中突出显示Synthetics金丝雀客户端节点使用Client::Synthetic 筛选条件。单击节点将显示整个请求的响应时间分布。单击两个节点之间的边将显示有关传送该连接的请求的详细信息。您还可以在服务地图中查看相关下游服务的 “远程” 推断节点。

当您单击 “Synthetics” 节点时,会显示在 Synthetics 中查看按钮,该按钮将您重定向到 Synthetics 控制台,您可以在其中查看金丝雀详细信息。


                X-Ray 服务地图中的 Canary 节点示例及服务详细信息。

使用单个跟踪的跟踪映射可以详细查看每个请求

要确定哪些服务会导致最多的延迟或正在导致错误,请通过在服务地图中选择跟踪来调用跟踪映射。单个跟踪映射显示单个请求的端到端路径。使用此方法可了解调用的服务,并直观显示上游和下游服务。


                X-Ray 跟踪映射中的 Canary 节点示例。

确定上游和下游服务持续故障的根本原因

一旦您收到 CloudWatch 系统中的故障警报S合神sCanary,请对 X-Ray Analytics 控制台中的跟踪数据进行统计建模,以确定 X-Ray Analytics 控制台中问题的可能根本原因。在 Analytics 控制台中,响应时间根本原因表显示记录的实体路径。X-Ray 确定跟踪中的哪个路径是响应时间的最可能原因。格式指示所遇到的实体的层次结构,结尾是响应时间根本原因。

以下示 Synthetics 显示,对在API Gateway由于 Amazon DynamoDB 表中的吞吐容量异常而导致失败。


                X-Ray 服务地图中的 Canary 节点示例。

                Canary 节点根本原因示例。

                表示 Canary 节点的示例注释过滤器。

确定性能瓶颈和趋势

可以使用来自 Synthetics Canary 的持续流量在一段时间内填充跟踪映射,从而查看终端节点性能随时间的趋势。


                表示 Canary 节点的示例注释过滤器。

比较更改前后的延迟和错误或故障率

精确确定发生更改的时间,以便将该更改与您的 Canary 捕获的问题增加相关联。使用 X-Ray 分析控制台将前后时间范围定义为不同的跟踪集,从而在响应时间分布中创建可视化区分。


                表示 Canary 节点的示例注释过滤器。

确定所有 API 和 URL 所需的 Canary 覆盖范围覆盖范围

使用 X-Ray Analytics 与用户比较 Canary 的体验。下面的 UI 显示了金丝雀的蓝色趋势线和用户的绿线。您还可以确定三个 URL 中有两个没有金丝雀测试。


                表示 Canary 节点的示例注释过滤器。

使用组专注于合成测试

您可以使用筛选表达式来创建 X-Ray 组,以专注于一组特定 Synthetics 工作流程,例如在Amazon Elastic Beanstalk。使用复杂关键字 service()edge()来过滤服务和边。

例 组筛选表达式

"edge(id(name: "www", type: "client::Synthetics"), id(name: "www", type: "AWS::ElasticBeanstalk::Environment"))"

                Elastic Beanstalk www 的示例节点。