使用 X-Ra CloudWatch y 调试合成金丝雀 - AWS X-Ray

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

使用 X-Ra CloudWatch y 调试合成金丝雀

CloudWatch Synthetics 是一项完全托管的服务,可让您监控端点并APIs使用每天 24 小时、每分钟运行一次的脚本化金丝雀。

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

  • 可用性

  • 延迟

  • 事务

  • 中断或失效的链接

  • S tep-by-step 任务完成情况

  • 页面加载错误

  • UI 资产的加载延迟

  • 复杂的向导流

  • 应用程序中的结算流程

Canary 遵循与客户相同的路线执行相同的操作和行为,并不断验证客户体验。

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

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

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

有关如何阅读追踪地图并与之交互的详细信息,请参阅查看服务地图

有关如何阅读 X-Ray Analytics 控制台并与之交互的更多信息,请参阅与 An AWS X-Ray alytics 控制台交互

在追踪地图中查看错误报告增加的加那利群岛

要查看哪些加那利群岛在 X-Ray 轨迹图中出现错误、故障、限制率或响应时间较慢的情况,您可以使用过滤器突出显示 Synthetics 金丝雀客户端节点。Client::Synthetic单击节点将显示整个请求的响应时间分布。单击两个节点之间的边缘会显示有关通过该连接的请求的详细信息。您还可以在追踪地图中查看相关下游服务的 “远程” 推断节点。

单击 Synthetics 节点时,侧面板会有一个在 Synthetics 中查看按钮会将您重定向到可在其中查看 Canary 详细信息的 Synthetics 控制台中。

带有服务详细信息的 X 射线追踪地图中的金丝雀节点示例。

使用单个跟踪的跟踪详情地图,详细查看每个请求

要确定哪个服务导致的延迟最长或导致错误,请通过在追踪地图中选择追踪来调用追踪详情地图。单个跟踪详细信息地图显示单个请求的 end-to-end 路径。使用此方法可了解调用的服务,并直观显示上游和下游服务。

X 射线追踪详情地图中的金丝雀节点示例。

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

在 Synthetics 金丝雀中收到故障 CloudWatch 警报后,请在 X-Ray 中使用跟踪数据的统计建模在 X-Ray Analytics 控制台中确定问题的可能根本原因。在 Analytics 控制台中,响应时间根本原因表显示了记录的实体路径。X-Ray 确定跟踪中的哪个路径是响应时间的最可能原因。格式指示所遇到的实体的层次结构,结尾是响应时间根本原因。

以下示例显示,由于亚马逊 DynamoDB 表中存在吞吐容量异常,在API网关上运行的 API “XXX” 的 Synthetics 测试失败。

X-Ray 跟踪映射中的 Canary 节点示例。
Canary 节点根本原因示例。
表示金丝雀节点的注释过滤器示例。

确定性能瓶颈和趋势

您可以使用来自 Synthetics 加那利群岛的持续流量来填充一段时间内的跟踪详情地图,查看终端节点性能随时间变化的趋势。

表示金丝雀节点的注释过滤器示例。

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

Pinpoint 变更发生的时间,将该变化与加那利群岛遇到的问题增加相关联。使用 X-Ray Analytics 控制台将之前和之后的时间范围定义为不同的跟踪集,从而在响应时间分布中创建视觉差异。

表示金丝雀节点的注释过滤器示例。

确定所有APIs人所需的金丝雀覆盖范围 URLs

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

表示金丝雀节点的注释过滤器示例。

使用组专注于 Synthetics 测试

您可以使用筛选条件表达式创建 X-Ray 组以专注于某组工作流程,例如,对正在 AWS Elastic Beanstalk上运行的“www”进行 Synthetics 测试。使用复杂关键字 service()edge() 来通过服务和边缘筛选。

例 组筛选表达式
"edge(id(name: "www", type: "client::Synthetics"), id(name: "www", type: "AWS::ElasticBeanstalk::Environment"))"
Elastic Beanstalk www 的示例节点。