使用 AWS X-Ray 实现分布式追踪 - 微服务的性能分析

通过服务地图可视化微服务请求的全路径,使用过滤表达式筛选问题追踪。同时介绍与 OpenTelemetry 的集成模式。

X-Ray 概述

X-Ray 是追踪分布式应用程序请求、定位性能瓶颈的服务。在 API GatewayLambdaDynamoDB 这样的服务链中,可视化各步骤的耗时和错误。通过服务地图直观把握微服务的依赖关系,立即定位延迟高或错误率高的服务。

追踪与采样

X-Ray SDK 集成到应用程序后,HTTP 请求、AWS SDK 调用、SQL 查询等会被自动追踪。LambdaAPI Gateway 只需启用设置即可开始追踪,无需集成 SDK。通过采样规则控制追踪的收集率。默认每秒 1 个请求 + 额外请求的 5% 被采样。高流量服务降低采样率以控制成本,低流量服务以 100% 采样追踪所有请求。

服务地图与性能分析

X-Ray 的服务地图从追踪数据自动生成,直观显示微服务间的依赖关系、各服务的延迟和错误率。节点颜色根据延迟和错误率变化,可以一眼定位有问题的服务。点击特定节点显示该服务的响应时间分布(直方图),可以确认 P50、P95、P99 的延迟。使用过滤表达式筛选特定条件(发生错误的追踪、延迟超过 3 秒的追踪等),高效调查问题根因。Insights 功能自动检测异常延迟增加和错误率上升。

与 OpenTelemetry 的集成与实现模式

X-Ray 支持与 OpenTelemetry(OTel)的集成,使用 AWS Distro for OpenTelemetry(ADOT)可以将 OTel SDK 计装的应用程序追踪发送到 X-Ray。OTel SDK 提供厂商中立的计装 API,将来更换后端为 Jaeger 或 Zipkin 时无需修改应用程序代码。Lambda 函数只需启用 X-Ray 的主动追踪即可自动计装,无需集成 SDK。ECSEKS 中将 X-Ray 守护进程作为边车部署,收集容器应用程序的追踪数据。

X-Ray 的定价

X-Ray 的定价由追踪记录数和扫描数构成。追踪记录每月前 100,000 条免费,之后每 100 万条约 5.00 美元。追踪获取(扫描)每 100 万条约 0.50 美元。调整采样率控制追踪量是最有效的成本优化措施。高流量服务将采样率降至 1%,低流量服务设为 100% 的差异化是推荐做法。Insights 功能无额外费用即可使用。

总结

X-Ray 是在微服务架构中可视化请求全路径的分布式追踪服务。服务地图把握依赖关系、过滤表达式筛选问题追踪、与 OpenTelemetry 集成的厂商中立计装是其主要特征。可以根据部署形态选择 Lambda 的主动追踪或 ADOT 边车等计装方法。