亚马逊AWS官方博客

AWS X-Ray 现支持 Amazon API Gateway 和全新抽样规则 API

大约 2年前,我的同事 Jeff 首次在 AWS re:Invent 大会的博文中向大家介绍了 AWS X-Ray。您或许还没注意到,AWS X-Ray 可以帮助开发人员分析和调试生产和开发环境中的所有内容,从简单 Web 应用程序到复杂的大型分布式微服务。自 X-Ray 于 2017 年正式推出以来,我们快速响应客户反馈,不断进行迭代,增强该服务,例如通过 AWS Key Management Service (KMS) 增强加密服务,增添了新的 SDK 和语言支持(支持 Python!),开放了守护程序的源代码并提供了延迟监控工具。今天,我们又增添了两项新功能:

    • 添加了 Amazon API Gateway 支持,从而更轻松地跟踪和分析通过 API 传递到底层服务的请求。
    • 我们最近还推出了支持在 AWS X-Ray 控制台和 API 中控制抽样规则。

我将向您展示如何为 API 启用跟踪。

启用 X-Ray 跟踪

首先从部署到 API Gateway 的简单 API 开始。我将添加两个终端节点。一个终端节点用于将记录推送到 Amazon Kinesis Data Streams,另一个用于调用简单的 AWS Lambda 函数。结果如下所示:

部署 API 后,我可以转到 Stages(阶段)子控制台,选择特定阶段,比如“开发”或“生产”。然后可以导航到 Logs/Tracing(日志/跟踪)选项卡,选择 Enable X-Ray Tracing(启用 X-Ray 跟踪),然后单击保存更改

启用跟踪功能后,转到 X-Ray 控制台,在新的 Sampling(抽样)界面中查看我的抽样规则。

我可以在控制台中修改规则,也可以通过 CLI、SDK 或 API 进行修改。这里我们穿插介绍一下抽样规则。

抽样规则
抽样规则允许以非常精细的程度定制我想要记录的请求和跟踪活动。这让我能通过在任意位置(AWS Lambda、Amazon ECSAmazon Elastic Compute Cloud (EC2) 甚至是本地)运行的代码控制动态记录的数据量 – 完全不必重写任何代码,也不必重新部署应用程序。上图所示的默认规则表明,系统会记录每秒的第一条请求,以及其余请求中 5% 的请求。我们将每秒的第一条请求称为储存库,存储库可以确保每秒至少记录一个跟踪活动。其余请求的 5% 就是我们所说的固定比例。储存库和固定比例均可配置。如果我将储存库大小设置为 50,将固定比例设置为 10%,那么如果每秒有 100 条请求与规则匹配,则抽样的请求总数为每秒 55 条请求。如果我将 X-Ray 记录器配置为从 X-Ray 服务读取抽样规则,那么就能允许 X-Ray 服务在所有分布式计算中维持抽样比例和储存库。如果我想启用此功能,只需在我的实例上安装最新版本的 X-Ray SDK 和守护程序即可。目前仅支持 GA SDK,后续我们还会支持 Ruby 和 Go。借助 API Gateway 和 Lambda 等服务,我可以直接在 X-Ray 控制台或 API 中配置所有内容。文档更深入地介绍了这项功能,我建议大家花时间仔细阅读。

当然,我可以使用抽样规则来控制成本,规则的动态特性和精细度对于调试生产系统也非常有用。如果我知道特定 URL 或服务需要予以额外监控,那么就可以在抽样规则中指定它。我可以按照 API 的各个阶段、服务类型、服务名称、主机、ARN、HTTP 方法、分段属性等进行过滤。这让我可以在较高的层面上快速检查分布式微服务、发现问题、调整某些规则,然后深入探究生产请求。我可以利用这样的功能,深入了解我的流量中第 99 个百分位处发生的问题,从而营造出更好的整体客户体验。多年来,我曾经在许多家不同的公司构建和部署了许多临时工具,尝试提供这样的支持,而在我的记忆中,从未有一种工具如此成功。现在,我只要部署 X-Ray,集中调整抽样规则就可以了,感觉就像自己拥有神奇的调试水晶球。我真心希望自己 5 年前能有这种工具。

好了,关于回忆就说这么多吧,让我们回到正题,实际演练一下。

目前我采用默认的抽样规则。由于我们已经启用了跟踪,而且也有一些正在运行的请求,大约 30 秒后,我就可以刷新服务地图,查看结果了。我可以单击任何节点直接查看跟踪,也可以进入 Traces 子控制台查看所有跟踪。

在这里,我可以查看所触发的各个 URL、源 IP 以及其他各种有用的指标。

如果我想深入探究,可以在搜索栏中编写一些过滤规则,找到特定的跟踪。API Gateway 部分有一些有用的注释,可以用来对 API ID 和阶段进行过滤和分组。下面展示了典型的 API Gateway 跟踪。

在 X-Ray 中添加对 API Gateway 的支持之后,我们就能在无服务器环境中获得端到端的生产跟踪能力,而抽样规则让我们能够实时调整跟踪,而不必重新部署任何代码。在去年于伦敦举办的 AWS 峰会上,我有幸与 Skyscanner 的 Ashley Sole 沟通了他们使用 AWS X-Ray 的情况,那天早些时候他就向我询问过这两项功能。我希望这个版本能让 Ashley 和其他开发人员更轻松地调试和分析他们的生产应用程序。

现已推出

今天起,所有已经公开推出 API Gateway 和 X-Ray 的区域均可以使用这两项功能。事实上,X-Ray 上周已经发布了它们的新控制台和 API,所以有些读者有可能已经看过了相关内容! 现在您可以亲身体验这些功能了!与以往一样,请通过 Twitter 或下面的评论部分给我们留言,与我们分享您的想法。

本篇作者

Randall Hunt

AWS 全球高级布道师。此前供职于 NASA, SpaceX 及 MongoDB。