本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS Management Console
AWS Management Console 如果您想要一个需要最少编码的图形用户界面 (GUI),请使用。不熟悉 X-Ray 的用户可以使用预先构建的可视化效果快速入门,并执行基本任务。您可以直接从控制台执行以下操作:
-
启用 X-Ray。
-
查看应用程序性能的高级摘要。
-
检查应用程序的运行状况。
-
识别高级错误。
-
查看基本跟踪摘要。
你可以使用 https://console.aws.amazon.com/cloudwatch/
使用亚马逊 CloudWatch 控制台
该 CloudWatch 控制台包括新的 X-Ray 功能,这些功能是从 X-Ray 控制台重新设计的,使其更易于使用。如果您使用 CloudWatch 控制台,则可以查看 CloudWatch 日志和指标以及 X-Ray 跟踪数据。使用 CloudWatch 控制台查看和分析数据,包括以下内容:
-
X-Ray 跟踪 — 在应用程序处理请求时查看、分析和筛选与其关联的跟踪。使用这些跟踪来查找高延迟、调试错误并优化您的应用程序工作流程。查看追踪地图和服务地图,以查看应用程序工作流程的直观表示。
-
日志-查看、分析和筛选应用程序生成的日志。使用日志对错误进行故障排除,并根据特定的日志值设置监控。
-
指标-使用您的资源发出的指标或创建自己的指标来衡量和监控您的应用程序性能。通过图表和图表查看这些指标。
-
监控网络和基础架构 — 监控主要网络的中断情况以及基础设施(包括容器化应用程序、其他 AWS 服务和客户端)的运行状况和性能。
-
以下 “使用 X-Ray 控制台” 部分列出了 X-Ray 控制台中的所有功能。
有关 CloudWatch 控制台的更多信息,请参阅 Amazon 入门 CloudWatch。
登录亚马逊 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/
使用 X-Ray 控制台
X-Ray 控制台为应用程序请求提供分布式跟踪。如果您想要更简单的控制台体验或不想更新应用程序代码,请使用 X-Ray 控制台。 AWS 不再开发 X-Ray 控制台。X-Ray 控制台包含用于仪器化应用程序的以下功能:
-
见解-自动检测应用程序性能中的异常并找出根本原因。见解包含在 CloudWatch 控制台的 Ins ights 下。有关更多信息,请参阅中的 “使用 X-Ray Insights” 探索 X-Ray 控制台。
-
服务地图-查看应用程序的图形结构及其与客户端、资源、服务和依赖关系的连接。
-
跟踪-查看应用程序在处理请求时生成的跟踪的概述。使用跟踪数据来了解您的应用程序在HTTP响应和响应时间等基本指标方面的表现。
-
分析-使用图表解释、浏览和分析跟踪数据,以了解响应时间分布。
-
配置-创建自定义跟踪以更改以下各项的默认配置:
-
采样-创建规则,定义对应用程序进行跟踪信息采样的频率。有关更多信息,请参阅中的配置采样规则探索 X-Ray 控制台。
-
加密-使用密钥对静态数据进行加密,您可以使用该密钥进行审核或禁用 AWS Key Management Service。
-
群组-使用筛选表达式来定义一组具有共同特征(例如网址名称或响应时间)的跟踪。有关更多信息,请参阅配置群组。
-
登录 X-Ray 控制台,网址为 https://console.aws.amazon.com/xray/home
探索 X-Ray 控制台
使用 X-Ray 控制台查看您的应用程序所处理的请求的服务地图和关联跟踪,并配置影响向 X-Ray 发送跟踪的方式的组和采样规则。
注意
X-Ray 服务地图和 CloudWatch ServiceLens 地图已合并到亚马逊 CloudWatch 控制台中的 X-Ray 追踪地图中。打开CloudWatch控制台
CloudWatch 现在包括应用程序信号,它可以发现和监控您的应用程序服务、客户端、Synthetics 金丝雀和服务依赖关系。使用 Application Signals 查看您的服务列表或可视地图,根据您的服务级别目标(SLO)查看运行状况指标,并深入查看关联 X-Ray 跟踪以便更详细地进行问题排查。
X-Ray 控制台的主页面是跟踪地图,它是 X-Ray 根据您的应用程序生成的跟踪数据生成的 JSON 服务图的可视表示形式。地图包含您账户中为请求提供服务的每个应用程序的服务节点,表示请求来源的上游客户端节点以及表示应用程序在处理请求时使用的 Web 服务和资源的下游服务节点。此外,还提供其他页面来查看跟踪和跟踪详细信息,以及配置组和采样规则。
在以下各节中查看 X-Ray 的主机体验并与 CloudWatch 主机进行比较。
探索 X-Ray 和 CloudWatch 游戏机
查看 X-Ray 跟踪地图,确定发生错误的服务、高延迟的连接或失败请求的跟踪。
注意
CloudWatch 现在包括 A pplication Sig nals,它可以发现和监控您的应用程序服务、客户端、合成金丝雀和服务依赖关系。使用 Application Signals 查看您的服务列表或可视地图,根据您的服务级别目标(SLO)查看运行状况指标,并深入查看关联 X-Ray 跟踪以便更详细地进行问题排查。
在亚马逊 CloudWatch 控制台中,X-Ray 服务 CloudWatch ServiceLens 地图和地图合并为一个 X-Ray 跟踪地图。打开CloudWatch控制台
查看跟踪映射
跟踪地图是您的应用程序生成的跟踪数据的直观表示。地图显示为请求提供服务的服务节点,表示请求来源的上游客户端节点以及表示应用程序在处理请求时使用的 Web 服务和资源的下游服务节点。
跟踪地图显示了使用 Amazon SQS 和 Lambda 的事件驱动应用程序的跟踪的连接视图。有关更多信息,请参阅以下 “跟踪事件驱动的应用程序” 部分。追踪地图还支持跨账户追踪,在单个地图中显示来自多个账户的节点。
注意
X-Ray 跟踪地图最多可以显示 10,000 个节点。在极少数情况下,当服务节点总数超过此限制时,您可能会收到错误消息,并且无法在控制台中显示完整的跟踪地图。
按组筛选追踪地图
通过使用筛选条件表达式,您可以定义某个组中要包含哪些跟踪的标准。有关筛选表达式的更多信息,请参阅使用筛选表达式。接下来,按照以下步骤在追踪地图中显示该特定群组。
现在,将会对服务地图进行筛选以显示与所选组的筛选条件表达式匹配的跟踪。
追踪地图图例和选项
追踪地图包括一个图例和多个用于自定义地图显示的选项。
使用 X-Ray 控制台中的跟踪页面根据 URL、响应代码或跟踪摘要中的其他数据查找跟踪。从追踪列表中选择追踪后,追踪详情页面将显示与所选追踪关联的服务节点地图和追踪段的时间表。
查看跟踪
深入了解跟踪时间线
时间轴部分在水平栏旁边显示了区段和子区段的层次结构,该水平条与他们完成任务的时间相对应。列表中的第一个条目为分段,表示服务为单个请求记录的所有数据。子段以缩进形式列出,并在该段后面列出。列包含有关每个区段的信息。
当您使用经过检测的 AWS SDK 或SQL客户端调用外部资源时HTTP,X-Ray SDK 会自动记录子分段。您还可以使用 X-Ray SDK 录制任何函数或代码块的自定义子分段。在自定义子区段打开时录制的其他子细分将成为该自定义子区段的子细分。
查看分段详细信息
从跟踪时间轴中,选择区段的名称以查看其详细信息。
区段详细信息面板显示 “概述”、“资源”、“注释”、“元数据”、“异常” 和 “SQL” 选项卡。以下内容适用:
-
概述选项卡显示有关请求和响应的信息。信息包括名称、开始时间、结束时间、持续时间、请求 URL、请求操作、请求响应代码以及任何错误和故障。
-
区段的 “资源” 选项卡显示来自 X-Ray SDK 的信息以及有关运行您的应用程序的 AWS 资源的信息。使用适用于 X-Ray SDK 的 Amazon EC2 或 Amazon ECS 插件来记录特定于服务的资源信息。 AWS Elastic Beanstalk有关插件的更多信息,请参阅中的 “服务插件” 部分配置适用于 Java 的 X-Ray 开发工具包。
-
其余选项卡显示为区段记录的 “注释”、“元数据” 和 “异常”。当异常是通过检测请求生成异常时,系统会自动捕获异常。注释和元数据包含您使用 X-Ray SDK 提供的操作记录的其他信息。要向区段添加注释或元数据,请使用 X-Ray SDK。有关更多信息,请参阅 “使用中的软件开发工具包对应用程序进行检测” 下面列出的特定语言链接。 AWS X-Ray 对您的应用程序进行检测 AWS X-Ray
查看子分段详细信息
在跟踪时间线中选择某个子分段的名称,可以查看其详细信息。
-
概述选项卡包含有关请求和响应的信息。这包括名称、开始时间、结束时间、持续时间、请求URL、请求操作、请求响应代码以及任何错误和故障。对于使用已检测客户端生成的子分段,概述选项卡包含从您的应用程序角度来看的请求和响应信息。
-
子区段的 “资源” 选项卡显示有关用于运行该子分段的 AWS 资源的详细信息。例如,资源选项卡可能包含 AWS Lambda 函数 ARN、有关 DynamoDB 表的信息、调用的任何操作以及请求 ID。
-
其余选项卡显示子区段上记录的 “注释”、“元数据” 和 “异常”。当异常是通过检测请求生成异常时,系统会自动捕获异常。注释和元数据包含您使用 X-Ray SDK 提供的操作记录的其他信息。使用 X-Ray SDK 向您的区段添加注释或元数据。有关更多信息,请参阅 “使用中的软件开发工具包对应用程序进行检测” 下面列出的特定语言链接。 AWS X-Ray 对您的应用程序进行检测 AWS X-Ray
对于自定义子分段,概述选项卡显示子分段的名称,您可以设置该名称来指定它所记录的代码或函数区域。有关更多信息,请参阅 “使用中的软件开发工具包对应用程序进行检测” 下面列出的特定语言链接。 AWS X-Ray 使用适用于 Java 的 X-Ray 开发工具包生成自定义子分段
下图显示了自定义子细分的概述选项卡。概述包含子分段 ID、父级 ID、名称、开始和结束时间、持续时间、状态以及错误或故障。
自定义子细分的 “元数据” 选项卡以JSON格式包含有关该子区段使用的资源的信息。
使用筛选表达式查看特定请求、服务、两个服务(边缘)之间的连接或满足条件的请求的跟踪地图。X-Ray 提供筛选表达式语言,根据原始段上请求标头、响应状态和索引字段中的数据筛选请求、服务和边缘。
当您选择某个跟踪时间段以在 X-Ray 控制台中查看时,您获得的结果可能会超出可在控制台中显示的内容。在右上角,控制台显示其扫描的跟踪数量,以及是否有更多跟踪可用。您可以使用筛选条件表达式缩小结果范围,以仅限于您要查找的跟踪。
当您在跟踪图中选择一个节点时,控制台会根据该节点的服务名称以及根据您的选择显示的错误类型来构造过滤表达式。要查找显示性能问题的跟踪或与特定请求相关的跟踪,您可以调整控制台提供的表达式,或创建您自己的表达式。如果您使用 X-Ray 开发工具包添加注释,您还可以根据是否存在注释键或根据键值进行筛选。
注意
如果您在轨迹图中选择相对时间范围并选择一个节点,则控制台会将该时间范围转换为绝对的开始和结束时间。为了确保节点的跟踪显示在搜索结果中,并避免扫描时间在该节点未处于活动状态的期间内,时间范围只应包含该节点发送跟踪的时间。若要相对于当前时间进行搜索,您可以在跟踪页面中切换回相对时间范围,并重新扫描。
如果结果仍超过控制台可显示的内容,控制台会显示有多少个跟踪匹配,以及扫描的跟踪数。显示的百分比是已扫描选定时间范围的百分比。为确保您会看到在结果中提供所有匹配的跟踪,进一步缩小筛选条件表达式的范围,或选择一个更短的时间范围。
为了先获取最新结果,控制台会从时间范围结尾开始反向扫描。如果有大量的跟踪,但结果很少,控制台会将时间范围分为多个分块并执行并行扫描。进度条显示已扫描的时间范围部分。
组是由筛选条件表达式定义的跟踪的集合。您可以使用群组来生成其他服务图表并提供 Amazon CloudWatch 指标。
组由其名称或 Amazon 资源名称 (ARN) 标识,并包含筛选条件表达式。此服务将比较传入到表达式的跟踪并相应地存储它们。
您可以使用筛选条件表达式搜索栏左侧的下拉菜单创建和修改组。
注意
如果服务在限定组时遇到错误,则在处理传入跟踪时不再包含该组,并记录错误指标。
有关组的更多信息,请参阅 配置群组。
筛选条件表达式可以包含一个关键字、一个一元或二元运算符 和一个值 用于比较。
keyword
operator
value
不同的运算符可用于不同类型的关键字。例如,responsetime
是一个数字关键字,可与数字相关运算符进行比较。
例 - 响应时间超过 5 秒的请求
responsetime > 5
您可以使用 AND
或 OR
运算符将多个表达式组合成一个复合表达式。
例 - 总时长在 5-8 秒之间的请求
duration >= 5 AND
duration <= 8
简单的关键字和运算符只在跟踪级别查找问题。如果下游发生了错误,但被您的应用程序处理了而未返回给用户,则搜索 error
将找不到它。
要查找存在下游问题的跟踪记录,您可以使用复杂的关键字service()
和edge()
。这些关键字允许您将筛选条件表达式应用于所有下游节点、单个下游节点或两个节点之间的边缘。有关这些关键字的更多信息,请参阅以下 “复杂关键词” 部分。要想获得更细的粒度,您可以使用 id() 函数按类型筛选服务和边缘。有关更多信息,请参阅以下 id 函数部分。
布尔关键字值可为 true 或 false。使用这些关键字查找导致错误的跟踪。
布尔值关键字
-
ok
- 响应状态代码为 2XX,成功。 -
error
- 响应状态代码为 4XX,客户端错误。 -
throttle
- 响应状态代码为“429 请求过多”。 -
fault
- 响应状态代码为 5XX,服务器错误。 -
partial
- 请求包含未完成的分段。 -
inferred
- 请求具有推断分段。 -
first
- 元素是枚举列表中的第一个元素。 -
last
- 元素是枚举列表中的最后一个元素。 -
remote
- 根本原因实体是远程的。 -
root
- 服务是跟踪的入口点或根分段。
布尔运算符查找指定键为 true
或 false
的分段。
布尔运算符
-
none - 如果关键字为 true,则表达式为 true。
-
!
- 如果关键字为 false,则表达式为 true。 -
=
、!=
- 将关键字的值与字符串true
或false
进行比较。这些运算符与其他运算符的行为相同,但更加明确。
例 - 响应状态为 2XX OK
ok
例 - 响应状态不为 2XX OK
!ok
例 - 响应状态不为 2XX OK
ok = false
例 - 上次枚举的错误跟踪具有错误名称“deserialize”
rootcause.fault.entity { last and name = "deserialize" }
例 - 包含远程分段的请求,其覆盖率大于 0.7 且服务名称为“traces”
rootcause.responsetime.entity { remote and coverage > 0.7 and name = "traces" }
例 - 具有推断分段(其中,服务类型为“AWS:DynamoDB”)的请求
rootcause.fault.service { inferred and name = traces and type = "AWS::DynamoDB" }
例 - 将名称为“data-plane”的分段用作根的请求
service("data-plane") {root = true and fault = true}
使用数字关键字可以搜索具有特定响应时间、持续时间或响应状态的请求。
数字关键字
-
responsetime
- 服务器发送响应所用的时间。 -
duration
- 包括所有下游调用的请求总时长。 -
http.status
- 响应(状态代码)。 -
index
- 元素在枚举列表中的位置。 -
coverage
- 实体响应时间占根分段响应时间的小数百分比。仅适用于响应时间根本原因实体。
数字运算符
数字关键字使用标准相等运算符和比较运算符。
-
=
、!=
- 关键字等于或不等于某个数值。 -
<
、<=
、>
、>=
- 关键字小于或大于某个数值。
例 - 响应状态不为 200 OK
http.status != 200
例 - 总时长在 5-8 秒之间的请求
duration >= 5 AND duration <= 8
例 - 在 3 秒内成功完成的请求,包括所有下游调用
ok !partial duration <3
例 - 索引大于 5 的枚举列表实体
rootcause.fault.service { index > 5 }
例 - 其最后一个实体覆盖率大于 0.8 的请求
rootcause.responsetime.entity { last and coverage > 0.8 }
使用字符串关键字可以查找请求标头中包含特定文本的跟踪,或查找特定用户 ID。
字符串关键字
-
http.url
- 请求 URL。 -
http.method
- 请求方法。 -
http.useragent
- 请求的用户代理字符串。 -
http.clientip
- 请求者 IP 地址。 -
user
- 跟踪中任意分段的用户字段的值。 -
name
- 服务或异常的名称。 -
type
- 服务类型。 -
message
- 异常消息。 -
availabilityzone
- 跟踪中任意分段上可用区字段的值。 -
instance.id
- 跟踪中任意分段上的实例 ID 字段的值。 -
resource.arn
- 跟踪中任何分段上的资源 ARN 字段的值。
字符串运算符查找等于或包含特定文本的值。必须始终在引号中指定值。
字符串运算符
-
=
、!=
- 关键字等于或不等于某个数值。 -
CONTAINS
- 关键字包含特定字符串。 -
BEGINSWITH
、ENDSWITH
- 关键字以特定字符串开头或结尾。
例 - http.url 筛选器
http.url CONTAINS "/api/game/"
要测试跟踪中是否存在某个字段而不考虑其值,可检查它是否包含空字符串。
例 - 用户筛选器
查找所有带有用户 ID 的跟踪。
user CONTAINS ""
例 - 选择跟踪,跟踪所具有的故障根本原因包含名为“Auth”的服务
rootcause.fault.service { name = "Auth" }
例 - 选择跟踪,跟踪所具有的响应时间根本原因的最后一个服务的类型为 DynamoDB
rootcause.responsetime.service { last and type = "AWS::DynamoDB" }
例 - 选择跟踪,跟踪所具有的故障根本原因的最后一个异常具有消息“拒绝 account_id 访问:1234567890”
rootcause.fault.exception { last and message = "Access Denied for account_id: 1234567890"
使用复杂关键字可根据服务名称、边缘节点名称或注释值查找请求。对于服务和边缘节点,您可以指定应用于服务或边缘节点的附加筛选条件表达式。对于注释,您可以使用布尔值、数字或字符串运算符筛选具有特定键的注释的值。
复杂关键字
-
annotation.
- 具有key
key
字段的注释值。注释的值可以是布尔值、数字或字符串,因此您可以使用任意这些类型的比较运算符。此关键字可以与service
或edge
关键字组合使用。 -
edge(
-source
,destination
) {filter
}source
和destination
服务之间的连接。可选的大括号中可以包含应用于此连接上的分段的筛选条件表达式。 -
group.
— 组的筛选条件表达式的值,被组名称或组 ARN 所引用。name
/ group.arn
-
json
- JSON 根本原因对象。有关以编程方式创建 JSON 实体的步骤,请参阅从 AWS X-Ray 获取数据。 -
service(
- 名为name
) {filter
}name
的服务。可选的大括号中可以包含应用于服务所创建的分段的筛选条件表达式。
使用 service 关键字查找触及跟踪地图上某个节点的请求的跟踪。
复杂关键字运算符可查找其中的指定键已经设置或未设置的分段。
复杂关键字运算符
-
none - 如果关键字已经设置,则表达式为 true。如果关键字为布尔类型,则其计算结果将为布尔值。
-
!
- 如果关键字未设置,则表达式为 true。如果关键字为布尔类型,则其计算结果将为布尔值。 -
=
、!=
— 比较关键字的值。 -
edge(
-source
,destination
) {filter
}source
和destination
服务之间的连接。可选的大括号中可以包含应用于此连接上的分段的筛选条件表达式。 -
annotation.
- 具有key
key
字段的注释值。注释的值可以是布尔值、数字或字符串,因此您可以使用任意这些类型的比较运算符。此关键字可以与service
或edge
关键字组合使用。 -
json
- JSON 根本原因对象。有关以编程方式创建 JSON 实体的步骤,请参阅从 AWS X-Ray 获取数据。
使用 service 关键字查找触及跟踪地图上某个节点的请求的跟踪。
例 - 服务筛选器
包括对 api.example.com
调用的请求出错 (500 系列错误)。
service("api.example.com") { fault }
您可以排除服务名称,而将筛选条件表达式应用于服务地图上的所有节点。
例 - 服务筛选器
导致追踪地图上任何地方出现故障的请求。
service() { fault }
边缘关键字将筛选条件表达式应用于两个节点之间的连接。
例 - 边缘筛选器
服务 api.example.com
对 backend.example.com
进行调用的请求因出现错误而失败。
edge("api.example.com", "backend.example.com") { error }
您也可以将 !
运算符与服务和边缘关键字结合使用来从另一个筛选条件表达式的结果中排除某个服务或边缘。
例 - 服务和请求筛选器
请求的 URL 以 http://api.example.com/
开头且包含 /v2/
,但并未到达名为 api.example.com
的服务。
http.url BEGINSWITH "http://api.example.com/" AND http.url CONTAINS "/v2/" AND !service("api.example.com")
例 — 服务和响应时间筛选器
查找已设置 http url
且呼应时间大于 2 秒的跟踪。
http.url AND responseTime > 2
对于注释,您可以调用设置了 annotation.
的所有跟踪,或使用对应于值的类型的比较运算符。key
例 - 带字符串值的注释
请求的注释名为 gameid
,字符串值为 "817DL6VO"
。
annotation.gameid = "817DL6VO"
例 — 注释已设置
带有名称设置为 age
的注释的请求。
annotation.age
例 — 注释未设置
不带有名称设置为 age
的注释的请求。
!annotation.age
例 - 带数字值的注释
请求的注释期限数值大于 29。
annotation.age > 29
例 — 注释与服务或边缘相结合
service { annotation.request_id = "917DL6VO" }
edge { source.annotation.request_id = "916DL6VO" }
edge { destination.annotation.request_id = "918DL6VO" }
例 — 带有用户的组
其的跟踪满足 high_response_time
组筛选条件(例如,responseTime > 3
),且用户名为“Alice”的请求。
group.name = "high_response_time" AND user = "alice"
例 - 具有根本原因实体的 JSON
具有匹配的根本原因实体的请求。
rootcause.json = #[{ "Services": [ { "Name": "GetWeatherData", "EntityPath": [{ "Name": "GetWeatherData" }, { "Name": "get_temperature" } ] }, { "Name": "GetTemperature", "EntityPath": [ { "Name": "GetTemperature" } ] } ] }
]
当您为 service
或 edge
关键字提供服务名称时,您将得到具有该名称的所有节点的结果。要进行更精确的筛选,可以使用 id
函数在名称之外再指定一个服务类型,以区分同名节点。
在监控账户中查看多个账户中的跟踪时,使用 account.id
函数为服务指定一个具体账户。
id(name: "service-name
", type:"service::type
", account.id:"account-ID
")
您可以在服务和边缘节点筛选条件中使用 id
函数来代替服务名称。
service(id(name: "service-name
", type:"service::type
")) { filter
}
edge(id(name: "service-one
", type:"service::type
"), id(name: "service-two
", type:"service::type
")) { filter
}
例如, AWS Lambda 函数会在跟踪映射中生成两个节点;一个用于函数调用,另一个用于 Lambda 服务。两个节点的名称相同,但类型不同。标准服务筛选器将查找这两个节点的跟踪。
例 - 服务筛选器
在任何名为 random-name
的服务上包含错误的请求。
service("function-name") { error }
使用 id
函数将搜索范围缩小到函数本身的错误,排除服务的错误。
例 - 使用 id 函数的服务筛选器
名为 random-name
、类型为 AWS::Lambda::Function
的服务中有错误的请求。
service(id(name: "random-name", type: "AWS::Lambda::Function")) { error }
要按类型搜索节点,您还可以完全排除名称。
例 — 具有 id 函数和服务类型的服务筛选器
类型为 AWS::Lambda::Function
的服务中有错误的请求。
service(id(type: "AWS::Lambda::Function")) { error }
要搜索特定节点 AWS 账户,请指定账户 ID。
例 - 具有 id 函数和账户 ID 的服务筛选器
包含某个特定账户 ID AWS::Lambda::Function
中某项服务的请求。
service(id(account.id: "account-id
"))
AWS X-Ray 支持跨账户可观察性,使您能够监控跨多个账户的应用程序并对其进行故障排除。 AWS 区域您可以如同在一个账户中进行操作那样,无缝搜索、可视化和分析任何关联账户中的指标、日志和跟踪。这样可提供在多个账户之间移动的请求的完整视图。您可以在 X-Ray 跟踪地图中查看跨账户跟踪,也可以在CloudWatch控制台
共享的可观测性数据可以包括以下任意类型的遥测数据:
-
Amazon 中的指标 CloudWatch
-
Amazon CloudWatch 日志中的日志组
-
有痕迹进来 AWS X-Ray
-
Amazon CloudWatch 应用程序见解中的应用程序
配置跨账户可观测性
若要启用跨账户可观测性,请设置一个或多个 AWS 监控账户,并将它们与多个源账户相关联。监控账户是一个 AWS 账户 可以查看源账户生成的可观测性数据并与之交互的中心。源账户是指为 AWS 账户 其所包含的资源生成可观测性数据的个人。
源账户与监控账户共享其可观测性数据。最多可将每个源账户中的跟踪复制到 5 个监控账户。将源账户中的跟踪副本到第一个监控账户免费。发送到更多监控账户的副本根据标准定价,向每个源账户收费。有关更多信息,请参阅AWS X-Ray 定价
要在监控账户和源账户之间创建链接,请使用 CloudWatch 控制台或和 API 中的全新 Observability Access Manager 命令。 AWS CLI 有关更多信息,请参阅CloudWatch 跨账户可观察性。
注意
X-Ray 追踪按接收 AWS 账户 地点计费。如果采样请求跨越多个服务 AWS 账户,则每个账户都会记录一条单独的跟踪,并且所有跟踪共享相同的跟踪 ID。要了解有关跨账户可观察性定价的更多信息,请参阅定价和 A ma CloudWatch
查看跨账户跟踪
跨账户跟踪显示在监控账户中。每个源账户仅显示该特定账户的本地跟踪。以下各节假设您已登录监控账户并已打开 Amazon CloudWatch 控制台。在追踪地图和追踪页面上,监控账户徽章都显示在右上角。
追踪地图
在 CloudWatch 控制台中,从左侧导航窗格的 X-Ray 轨迹下选择 Trace Map。默认情况下,跟踪映射显示向监控账户发送跟踪的所有源账户的节点,以及监控账户本身的节点。在追踪地图上,选择左上角的过滤器,使用账户下拉列表筛选追踪地图。应用账户筛选条件后,与当前筛选条件不匹配的账户的服务节点将显示为灰色。
选择服务节点时,节点详细信息窗格将包含该服务的账户 ID 和标签。
在追踪地图的右上角,选择列表视图以查看服务节点列表。服务节点列表包括来自监控账户的服务以及所有已配置的源帐户。从节点筛选条件中进行选择,按 Account label 或 Account id 筛选节点列表。
跟踪
通过从监控账户打开 CloudWatch 控制台,然后在左侧导航窗格的 X-Ray traces 下选择跟踪,即可查看跨多个账户的跟踪详情。您也可以通过在 X-Ray Trace Map 中选择一个节点,然后从节点详细信息窗格中选择查看跟踪来打开此页面。
跟踪页面支持按账户 ID 进行查询。首先,请输入包含一个或多个账户 ID 的查询。有关查询的更多信息,请参阅使用过滤器表达式。以下示例查询通过账户 ID X 或 Y 的跟踪:
service(id(account.id:"
X
")) OR service(id(account.id:"Y
"))
按账户优化查询。从列表中选择一个或多个账户,然后选择添加到查询。
跟踪详细信息
从跟踪页面底部的跟踪列表中选择,查看跟踪的详细信息。将显示跟踪详细信息,包括跟踪详细信息地图,其中包含来自追踪所通过的所有账户的服务节点。选择某个具体的服务节点查看其相应的账户。
分段时间线部分按照时间线显示每个分段的账户详细信息。
AWS X-Ray 支持使用 Amazon SQS 和跟踪事件驱动的应用程序。 AWS Lambda使用 CloudWatch 控制台查看每个请求在 Amazon SQS 中排队并由一个或多个 Lambda 函数处理的连接视图。来自上游消息生成者的跟踪会自动链接到来自下游 Lambda 使用者节点的跟踪,从而创建 end-to-end 应用程序视图。
注意
在追踪地图中查看链接的轨迹
使用CloudWatch控制台
选择虚线边缘以显示收到的事件期限直方图,图中显示了使用器收到时事件年限的分布情况。每次收到事件时都会计算期限。
查看链接的跟踪详情
查看消息创建者、Amazon SQS 队列或 Lambda 使用器发送的跟踪详情:
-
使用跟踪映射选择消息创建者、Amazon SQS 或 Lambda 使用者节点。
-
从节点详情中选择查看跟踪以显示跟踪列表。您也可以直接导航到 CloudWatch 控制台中的 T races 页面。
-
从列表中选择特定跟踪以打开跟踪详情页面。跟踪详情页面显示所选跟踪是链接的跟踪集合的一部分时的消息。
追踪详情地图显示当前追踪以及上游和下游链接的追踪,每条轨迹都包含在一个指示每条追踪边界的框中。如果当前选择的跟踪链接到多个上游或下游跟踪,则上游或下游链接的跟踪的节点会堆叠在一起,并会显示选择跟踪按钮。
在追踪详情地图下方,将显示追踪线段的时间线,包括上游和下游链接的追踪。如果有多个上游或下游链接的中,则不会显示它们的分段详情。要查看一组关联轨迹中单个轨迹的区段详细信息,请按以下部分所述选择一条轨迹。
选择链接的跟踪集合中的某一个跟踪
将链接的跟踪集合筛选到只有一个跟踪,以时间线的形式查看分段详情。
-
在轨迹详细信息地图上选择链接轨迹下方的选择轨迹。将会显示跟踪列表。
-
选择追踪旁边的单选按钮可在追踪详情地图中查看该追踪信息。
-
选择取消跟踪选择以查看链接的跟踪的整个集合。
当您在跟踪地图上选择节点或边缘时,X-Ray 控制台会显示延迟分布直方图。
延迟
延迟是指请求从开始到完成所用的时间。直方图显示延迟分布。它的 x 轴显示持续时间,y 轴显示与每个持续时间匹配的请求百分比。
该直方图显示服务在不到 300 ms 的时间内完成大多数请求。一小部分请求用时多达 2 秒,而一些异常项用了更多时间。
解释服务详细信息
服务直方图和边缘直方图提供了从服务或请求者角度看的延迟的可视化表示形式。
-
通过单击圆圈选择服务节点。X-Ray 显示服务所完成的请求的直方图。延迟是服务记录的延迟,不包括服务和请求者之间的任何网络延迟。
-
通过单击两个服务之间边缘的线条或箭头尖端来选择边缘。X-Ray 显示来自请求者的、由下游服务所完成的请求的直方图。延迟是服务记录的延迟,且包括两个服务之间的网络连接延迟。
要解释服务详细信息面板直方图,您可以查找偏离直方图中大多数值最大的值。可以将这些异常值 视为直方图中的高峰或峰值,并且您可以查看特定区域的跟踪以调查发生了什么情况。
要查看按延迟筛选的跟踪,请在直方图上选择一个范围。单击要开始选择的位置,然后从左向右拖动,突出显示一个要包括在跟踪筛选条件中的延迟范围。
选择范围后,您可以选择 Zoom,只查看该部分的直方图并细化您的选择。
将焦点设置为感兴趣的区域后,选择 View traces。
AWS X-Ray 持续分析您账户中的跟踪数据,以识别应用程序中出现的紧急问题。当错误率超出预期范围时,它会创建见解来记录问题并跟踪问题产生的影响,直到问题被解决。借助 Insights,您可以:
-
确定应用程序哪里出现了问题,问题的根本原因,以及关联的影响。Insights 提供的影响分析使您能够得出问题的严重性和优先级。
-
随着时间推移,当问题发生变化时收到通知。Insights 通知可以通过 Amazon EventBridge 与您的监控和警报解决方案集成。这种集成让您可以根据问题的严重性发送自动化电子邮件或警报。
X-Ray 控制台可在追踪图中识别正在发生事件的节点。若要查看见解摘要,请选择受影响的节点。您还可以通过从左侧的导航窗格中选择 Insights 来查看和筛选见解。
当 X-Ray 在服务地图的一个或多个节点中检测到异常时,便会创建见解。该服务使用统计建模来预测应用程序中服务的预期故障率。在前面的示例中,异常是故障的 AWS Elastic Beanstalk增加。Elastic Beanstalk 服务器经历了多次 API 调用超时,导致下游节点出现异常。
在 X-Ray 控制台中启用见解
必须为希望使用见解功能的每个组都启用见解。可以从组页面启用见解。
注意
X-Ray 使用 GetInsightSummaries GetInsight GetInsightEvents、、和 GetInsightImpactGraph API 操作从见解中检索数据。要查看见解,请使用 AWSXrayReadOnlyAccess IAM 托管策略或将以下自定义策略添加到您的 IAM 角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:GetInsightSummaries", "xray:GetInsight", "xray:GetInsightEvents", "xray:GetInsightImpactGraph" ], "Resource": [ "*" ] } ] }
有关更多信息,请参阅 如何 AWS X-Ray 与 IAM 配合使用。
启用洞察通知
可以使用见解通知为每个见解事件创建一则通知,例如,当创建见解、发生重大更改,或关闭见解时。客户可以通过 Amazon EventBridge 事件接收这些通知,并使用条件规则采取诸如 SNS 通知、Lambda 调用、向 SQS 队列发布消息或任何目标支持的操作。 EventBridge我们会尽可能发送见解通知,但并不保证。有关目标的更多信息,请参阅 Amazon EventBridge 目标。
您可以从组页面为任意已启用见解的组启用见解通知。
配置 Amazon EventBridge 条件规则
-
导航到左侧导航栏中的规则,然后选择创建规则。
-
提供规则的名称和描述。
-
选择事件模式,然后选择自定义模式。提供一个包含
"source": [ "aws.xray" ]
和"detail-type": [ "AWS X-Ray Insight Update" ]
的模式。以下是可能的一些示例模式。-
事件模式要匹配 X-Ray 见解中的所有传入事件:
{ "source": [ "aws.xray" ], "detail-type": [ "AWS X-Ray Insight Update" ] }
-
事件模式要匹配指定的
state
和category
:{ "source": [ "aws.xray" ], "detail-type": [ "AWS X-Ray Insight Update" ], "detail": { "State": [
"ACTIVE"
], "Category": ["FAULT"
] } }
-
-
选择并配置当某个事件匹配此规则时,您想要调用的目标。
-
(可选)提供标签以便更轻松地识别和选择此规则。
-
选择创建。
注意
X-Ray insights 通知会将事件发送到亚马逊 EventBridge,而亚马逊目前不支持客户托管密钥。有关更多信息,请参阅 AWS X-Ray 中的数据保护。
见解
见解概述页面试图回答以下三个关键问题:
-
什么是潜在问题?
-
什么是根本原因?
-
什么是影响?
异常服务一节介绍了每个服务的时间线,展示了事件过程中故障率的变化情况。时间线显示了出现故障的跟踪数量,根据记录的流量,以实心条带指明预计的故障数量。事件窗口将见解的持续时间可视化。当 X-Ray 观察到指标出现异常并且启用见解后依旧存在的时候,事件窗口启动。
以下示例显示的是导致某个事件的故障出现增加:
“根本原因” 部分显示了以根本原因服务和受影响路径为重点的跟踪地图。可以选择根本原因地图右上角的眼睛图标,以隐藏未受影响的节点。根本原因服务是 X-Ray 识别到异常的最远的下游节点。它可以代表您检测的某项服务,或是您服务使用检测客户端调用过的外部服务。例如,如果您使用 AWS 经过检测的软件开发工具包客户端调用 Amazon DynamoDB,那么 DynamoDB 错误的增加会导致以 DynamoDB 为根本原因的见解。
若要进一步调查根本原因,请在根本原因图上选择查看根本原因详情。您可以使用分析页面来调查根本原因以及相关消息。有关更多信息,请参阅 与分析控制台互动。
在地图中继续上游的故障会影响多个节点,并会导致多种异常。如果某个故障一直传回到发出请求的用户,就会出现客户端故障。这是跟踪地图根节点的故障。影响示意图为整个组的客户端体验提供了时间线。根据以下状态的比例来计算此体验:故障、错误、瓶颈和没错。
此示例显示在事件发生过程中,在顶部节点带有故障的跟踪增加了。下游服务中的事件并不总是与客户端错误的增加相对应。
选择分析见解会在窗口中打开 X-Ray Analytics 控制台,您可以在其中深入研究产生见解的跟踪集。有关更多信息,请参阅 与分析控制台互动。
了解影响
AWS X-Ray 衡量持续存在的问题所造成的影响,作为生成见解和通知的一部分。有两种方法来衡量影响:
-
对 X-Ray 组的影响。有关更多信息,请参阅配置群组
-
对根本原因服务的影响
此影响由在给定时间内发生故障或造成错误的请求比例决定。通过这种影响分析,您可以根据自己的特定情况得出问题的严重性和优先级。除了见解通知以外,影响还是控制台体验的一部分。
重复数据删除
AWS X-Ray Insights 可以消除多个微服务中的重复问题。它使用异常检测来确定是某个问题根本原因的服务,确定其他相关服务是否由于同一根本原因展现出异常行为,并将结果记录为单个见解。
查看见解的进展
X-Ray 会定期重新评估见解,直到它们得到解决,并将每项明显的中间更改记录为通知,该通知可以作为 Ama EventBridge zon 事件发送。这使您能够构建流程和工作流程以确定问题如何随时间推移而发生变化,并采取适当的措施,例如发送电子邮件或使用 EventBridge与警报系统集成。
您可以在影响页面上的影响时间线中查看事件活动。默认情况下,时间线会显示最受影响的服务,直到您选择另一项服务。
要查看事件的轨迹图和图表,请从影响时间轴中进行选择。追踪地图显示应用程序中受事件影响的服务。在“影响分析”下,图表显示选定节点和组中客户端的故障时间线。
若要更加深入地了解某个事件中涉及的跟踪,请在检查页面上选择分析事件。可以使用分析页面来优化跟踪列表并确定受影响的用户。有关更多信息,请参阅 与分析控制台互动。
AWS X-Ray Analytics 控制台是一个交互式工具,用于解释跟踪数据,从而快速了解您的应用程序及其底层服务的性能。借助该控制台,您可以通过交互式响应时间图表和时间序列图表探索、分析和直观地显示跟踪。
当在 Analytics 控制台中进行选择时,控制台构造筛选条件以反映所有跟踪的所选子集。您可以通过单击与当前跟踪集关联的指标和字段的图表和面板,使用越来越精细的筛选条件细化活动的数据集。
X-Ray Analytics 使用以下关键功能对跟踪数据进行分组、筛选、比较和量化。
功能
功能 | 描述 |
---|---|
组 |
初始选定的组为 |
已检索跟踪 |
默认情况下,Analytics 控制台根据所选组中的所有跟踪生成图表。检索的跟踪表示您工作集中的所有跟踪。您可以在此平铺中找到跟踪计数。您应用于主搜索栏的筛选表达式可以细化和更新检索的跟踪。 |
显示在图表中/从图表中隐藏 |
一个开关,用于对照检索的跟踪比较活动的组。要对照任何活动的筛选条件比较与组相关的数据,请选择显示在图表中。要从图表中删除此视图,请选择从图表中隐藏。 |
已筛选跟踪集 A |
通过与图表和表进行交互,应用筛选条件来创建筛选跟踪集 A 的条件。应用筛选条件后,可以在此平铺内计算适用跟踪的数量以及跟踪占所检索总数的百分比。筛选条件作为标签填充到筛选跟踪集 A 磁贴中,也可以将其从此磁贴中删除。 |
细化 |
此函数根据应用到跟踪集 A 的筛选条件更新已检索的跟踪集。细化已检索的跟踪集会根据跟踪集 A 的筛选条件刷新所有已检索的跟踪的工作集。已检索的跟踪的工作集是组中所有跟踪的采样子集。 |
筛选跟踪集 B |
创建后,筛选跟踪集 B 是筛选跟踪集 A 的副本。若要比较这两个跟踪集,请选择将会应用于跟踪集 B 的筛选,而跟踪集 A 则保持不变。应用筛选条件后,可以在此平铺内计算适用跟踪的数量以及跟踪占所检索总数的百分比。筛选条件作为标签填充到已筛选跟踪集 B 磁贴中,也可以将其从此磁贴中删除。 |
响应时间根本原因实体路径 |
记录的实体路径表。X-Ray 确定跟踪中的哪个路径是响应时间的最可能原因。格式指示所遇到的实体的层次结构,结尾是响应时间根本原因。使用这些行来筛选周期性的响应时间故障。有关自定义根本原因筛选器和通过 API 获取数据的更多信息,请参阅中的检索和完善根本原因分析部分。从 X-Ray 获取数据 |
增量 (�) |
在跟踪集 A 和 B 都处于活动状态时添加到指标表中的列。增量列计算跟踪集 A 和跟踪集 B 之间的跟踪百分比差异。 |
X-Ray Analytics 控制台生成两个主要图表以帮助您直观显示跟踪:响应时间分配和时间序列活动。本节和下面的内容提供有关每个图表的示例,并说明有关如何阅读这些图表的基本知识。
以下是与响应时间线状图关联的颜色(时间序列图使用相同的颜色方案):
-
组中的所有跟踪 - 灰色
-
已检索跟踪 - 橙色
-
已筛选跟踪集 A - 绿色
-
已筛选跟踪集 B - 蓝色
例 - 响应时间分配
响应时间分配是一个图表,用于显示给定响应时间内的跟踪数量。单击并拖动以在响应时间分配内进行选择。这会针对特定响应时间内的所有跟踪的工作跟踪集,选择和创建一个名为 responseTime
的筛选条件。
时间序列活动图表显示给定时间段的跟踪数量。颜色指示反映响应时间分配的线图颜色。活动序列中的颜色块越深越饱满,则表示给定时间的跟踪数越多。
例 - 时间序列活动
单击并拖动以在时间序列活动图表内进行选择。这会针对特定时间范围内的所有跟踪的工作跟踪集,选择和创建一个名为 timerange
的筛选条件。
下面的示例说明 X-Ray Analytics 控制台的常见使用案例。每个示例演示控制台体验的一个关键功能。这些示例作为一个组遵循基本的疑难排查工作流。这些步骤介绍了如何先发现运行状况不佳的节点,以及如何与 Analytics 控制台交互以自动生成比较查询。通过查询缩小范围后,您就可以查看感兴趣的跟踪的详细信息,以确定是什么问题影响了服务的健康运行。
跟踪映射通过根据成功调用与错误和故障的比率对其进行着色来指示每个节点的运行状况。当您在节点上看到红色的百分比时,这指示一个故障。使用 X-Ray Analytics 控制台调查此故障。
有关如何读取轨迹地图的更多信息,请参阅使用 X-Ray 追踪地图。
使用响应时间分配,您可以观察高峰响应时间。通过选择高峰响应时间,图表下方的各个表格将会更新,以显示所有关联的指标,如状态代码。
您可以通过单击并拖动 X-Ray 来选择和创建筛选条件。筛选条件会以灰色阴影的形式显示在线状图顶部。现在,您可以沿着分配左右拖动阴影区以更新您的选择和筛选条件。
您可以使用图表下方的指标表钻取所选峰值内的跟踪。通过单击HTTP 状态代码表中的行,您可以自动对工作数据集创建筛选条件。例如,您可以查看状态代码为 500 的所有跟踪。这会在跟踪集平铺中创建一个名为 http.status
的筛选条件标签。
根据用户、URL、响应时间根本原因或其他预定义的属性钻取错误集。例如,要额外筛选状态代码为 500 的跟踪集,请从 USERS 表中选择一行。这会导致在跟踪集平铺中产生两个筛选条件标签:http.status
(如前面指定)和 user
。
跨不同用户及其 POST 请求进行比较,以查找其他差异和关联。应用您的第一个筛选条件集。它们通过响应时间分配中的蓝线定义。然后,选择比较。最初,这会对跟踪集 A 创建筛选器的副本。
要继续,请定义要应用于跟踪集 B 的新的筛选条件集。这第二个集合由绿线表示。以下示例根据蓝色和绿色颜色方案显示不同的行。
当您使用控制台筛选条件缩小范围时,指标表下方的跟踪列表将变得更有意义。跟踪列表将有关 URL、用户和状态代码的信息合并显示在一个视图中。如需更多见解,请从此表中选择一行,以打开跟踪的详细信息页面并查看其时间线和原始数据。
组是由筛选条件表达式定义的跟踪的集合。您可以使用群组来生成其他服务图表并提供 Amazon CloudWatch 指标。您可以使用 AWS X-Ray 控制台或 X-Ray API 为服务创建组并进行管理。本主题介绍如何使用 X-Ray 控制台来创建和管理组。请参阅使用 X-Ray API 配置采样、分组和加密设置,了解如何使用 X-Ray API 管理组。
您可以为追踪地图、追踪或分析创建追踪组。创建群组后,该群组将作为筛选器出现在所有三个页面的群组下拉菜单中:Trace Map、Trac es 和 Analytics。
组由其名称或 Amazon 资源名称 (ARN) 标识,并包含筛选条件表达式。此服务将比较传入到表达式的跟踪并相应地存储它们。请参阅使用过滤器表达式,详细了解如何构建筛选表达式。
更新组的筛选条件表达式不会更改已记录的数据。更新仅应用于后续跟踪。这可能会生成新旧表达式的合并图。为避免发生这种情况,请删除当前群组并创建一个新的组。
注意
群组按检索到的符合筛选条件表达式的追踪数量计费。有关更多信息,请参阅AWS X-Ray 定价
创建组
注意
现在,您可以从亚马逊 CloudWatch 控制台中配置 X-Ray 组。也可以继续使用 X-Ray 控制台。
应用组
编辑组
克隆组
克隆组会创建具有现有组的筛选条件表达式和标签的新组。克隆组时,新组具有被克隆组的同一名称,名称后附加 -clone
。
删除组
按照本部分中的步骤删除组。您不能删除默认组。
在 Amazon 中查看群组指标 CloudWatch
创建组后,将根据组的筛选条件表达式检查传入跟踪,因为它们存储在 X-Ray 服务中。每分钟向 Amazon CloudWatch 发布符合每个标准的追踪数量的指标。在 “编辑组” 页上选择 “查看指标”,即可打开 CloudWatch控制台,进入 “指标” 页面。有关如何使用 CloudWatch 指标的更多信息,请参阅亚马逊 CloudWatch 用户指南中的使用亚马逊 CloudWatch指标。
您可以使用 AWS X-Ray 控制台为您的服务配置采样规则。支持带采样配置的主动跟踪 AWS 服务的 X-Ray SDK 使用采样规则来确定要记录哪些请求。
配置采样规则
您可以为以下使用案例配置采样:
-
API 网关加密 - API 网关支持采样和主动跟踪。要在 API 阶段启用主动跟踪,请参阅Amazon API Gateway 主动追踪支持 AWS X-Ray。
-
AWS AppSync— AWS AppSync 支持采样和主动跟踪。要启用对 AWS AppSync 请求的主动跟踪,请参阅使用 AWS X-Ray 进行跟踪。
-
计算平台上的 Instrument X-Ray SDK — 当使用诸如 Amazon EC2、Amazon ECS 或之类的计算平台时 AWS Elastic Beanstalk,如果应用程序已使用最新的 X-Ray SDK 进行检测,则支持采样。
自定义抽样规则
您可以通过自定义采样规则来控制记录的数据量。也可以修改采样行为,而无需修改或重新部署代码。采样规则向 X-Ray 开发工具包告知要为一系列条件记录的请求数。默认情况下,X-Ray SDK 会记录每秒开始时收到的第一个请求,以及任何其他请求的百分之五。每秒一个请求是容器。这可确保只要服务正在处理请求,就会每秒至少记录一个跟踪。5% 是对超出容器尺寸的额外请求进行采样的比率。
您可以将 X-Ray 开发工具包配置为从您包含在代码中的 JSON 文档读取采样规则。但是,当您运行服务的多个实例时,每个实例都会单独执行采样。这会导致采样的请求的总体比例升高,因为所有实例的容器都会被有效地一起添加。此外,要更新本地采样规则,则必须重新部署您的代码。
通过在 X-Ray 控制台中定义采样规则,然后配置开发工具包以从 X-Ray 服务读取规则,您可以避免这两个问题。该服务将管理每条规则的容器,并向您的服务的每个实例分配配额以基于正在运行的实例数均匀地分配容器。容器限制是根据您设置的规则计算的。由于规则是在服务中配置的,您可以管理规则而不进行额外的部署。有关 SDK 的更多信息,请参阅使用 S AWS DK。
注意
X-Ray 会尽力应用采样规则,在某些情况下,有效采样率可能并不与配置的采样规则完全匹配。但是,随着时间推移,采样的请求数量应接近配置的百分比。
现在,您可以在亚马逊 CloudWatch 控制台中配置 X-Ray 采样规则。也可以继续使用 X-Ray 控制台。
采样规则选项
以下选项可用于每条规则。字符串值可以使用通配符来匹配单个字符 (?
) 或零或多个字符 (*
)。
采样规则选项
-
规则名称(字符串) — 一个唯一的规则名称。
-
优先级(1 和 9999 之间的整数)— 采样规则的优先级。服务按优先级的上升顺序评估规则,并与匹配的第一条规则进行抽样决策。
-
容器(非负整数)- 在应用固定比率之前,每秒与检测匹配的固定请求数。该容器不由服务直接使用,但适用于所有使用该规则的服务。
-
速率(0 到 100 之间的整数)– 容器耗尽后,要检测的匹配请求的百分比。在控制台中配置采样规则时,请选择 0 到 100 之间的百分比。使用 JSON 文档在客户端开发工具包中配置采样时,请提供介于 0 和 1 之间的一个百分比。
-
服务名称(字符串)-检测过的服务的名称,显示在追踪图中。
-
X-Ray 开发工具包 - 您在记录器上配置的服务名称。
-
Amazon API Gateway -
。api-name
/stage
-
-
服务类型(字符串)-追踪地图中显示的服务类型。对于 X-Ray 开发工具包,请通过应用合适的插件来设置服务类型:
-
AWS::ElasticBeanstalk::Environment
— AWS Elastic Beanstalk 环境(插件)。 -
AWS::EC2::Instance
— Amazon EC2 实例(插件)。 -
AWS::ECS::Container
— Amazon ECS 容器(插件)。 -
AWS::APIGateway::Stage
- Amazon API Gateway 阶段。 -
AWS::AppSync::GraphQLAPI
— 一个 AWS AppSync API 请求。
-
-
主机(字符串)— HTTP 主机标头中的主机名。
-
HTTP 方法 - 字符串 HTTP 请求的方法。
-
URL 路径(字符串) — 请求的 URL 路径。
-
X-Ray 开发工具包 HTTP 请求 URL 的路径部分。
-
-
资源 ARN(字符串)-运行服务的 AWS 资源的 ARN。
-
X-Ray 开发工具包 — 不支持。开发工具包只能使用资源 ARN 设置为
*
的规则。 -
Amazon API Gateway - 阶段 ARN。
-
-
(可选)属性(键和值) - 在做出采样决定时已知的片段属性。
-
X-Ray 开发工具包 — 不支持。该开发工具包将忽略指定属性的规则。
-
AmazonAPI Gateway - 来自原始 HTTP 请求的标头。
-
采样规则示例
例 - 没有容器和低比率的默认规则
您可以修改默认规则的容器和比率。默认规则应用于与任何其他规则都不匹配的请求。
-
容器:
0
-
速率:
5
(使用是使用的 JSON 文档配置的0.05
)
例 - 调试规则以跟踪对有问题的路由的所有请求
一个临时应用的用于调试的高优先级规则。
-
规则名称:
DEBUG – history updates
-
优先级:
1
-
容器:
1
-
速率:
100
(使用是使用的 JSON 文档配置的1
) -
服务名称:
Scorekeep
-
服务类型:
*
-
主机:
*
-
HTTP 方法:
PUT
-
URL 路径:
/history/*
-
资源 ARN:
*
例 - 针对 POST 的更高的最低比率
-
规则名称:
POST minimum
-
优先级:
100
-
容器:
10
-
速率:
10
(使用是使用的 JSON 文档配置的.1
) -
服务名称:
*
-
服务类型:
*
-
主机:
*
-
HTTP 方法:
POST
-
URL 路径:
*
-
资源 ARN:
*
将您的服务配置为使用采样规则
X-Ray 开发工具包需要额外配置来使用在控制台中配置的采样规则。有关更多信息,请参阅采用您的语言的配置主题中有关配置采样策略的详细信息:
对于 API 网关,请参阅Amazon API Gateway 主动追踪支持 AWS X-Ray。
查看采样结果
X-Ray 控制台采样页显示了有关您的服务如何使用每个采样规则的详细信息。
趋势列显示了在前几分钟如何使用了规则。每个列显示了 10 秒时段的统计数据。
采样统计数据
-
匹配的总规则数:与此规则匹配的请求数。此数字不包含可能与此规则匹配但先与优先级更高的规则匹配的请求。
-
总采样数:已记录的请求数。
-
以固定比率采样:通过应用规则的固定比率采样的请求数。
-
在容器限制下采样:使用由 X-Ray 分配的配额采样的请求数。
-
已从容器借用:通过从容器借用来采样的请求数。当某个服务首次将请求与规则匹配时,X-Ray 尚未向它分配配额。但是,如果容器至少为 1,该服务会每秒借用一个跟踪,直到 X-Ray 分配一个配额。
有关采样统计数据以及服务采样规则的方式的更多信息,请参阅通过 X-Ray API 使用采样规则。
后续步骤
您可以使用 X-Ray API 管理采样规则。利用 API,您可以按计划以编程方式创建和更新规则,也可以作为对警报或通知的响应执行此操作。有关说明和其他规则示例,请参阅使用 X-Ray API 配置采样、分组和加密设置。
X-Ray SDK AWS 服务 还使用 X-Ray API 来读取采样规则、报告采样结果和获取采样目标。服务必须跟踪它们应用每个规则的频率,根据优先级评估规则,并在某个请求与 X-Ray 尚未针对其向服务分配配额的规则匹配时从容器中借用。有关服务如何使用 API 进行采样的更多详细信息,请参阅通过 X-Ray API 使用采样规则。
当 X-Ray 开发工具包调用采样 API 时,它使用 X-Ray 进程守护程序作为代理。如果您已使用 TCP 端口 2000,则可以配置进程守护程序以在其他端口上运行代理。有关详细信息,请参阅 配置 AWS X-Ray 守护程序。
您可以使用路径和查询来深度链接到特定的追踪记录,或者使用经过筛选的追踪视图和追踪地图。
控制台页面
-
欢迎页面 - xray/home#/welcome
-
追踪地图 — x
ray/home#/service-map -
跟踪 - xray/home#/traces
跟踪
您可以针对每个跟踪的时间线、原始和映射视图生成链接。
跟踪时间线 - xray/home#/traces/
trace-id
原始跟踪数据 - xray/home#/traces/
trace-id
/raw
例 - 原始跟踪数据
https://console.aws.amazon.com/xray/home#/traces/1-57f5498f-d91047849216d0f2ea3b6442/raw
筛选条件表达式
链接到筛选的跟踪列表。
筛选的跟踪视图 - xray/home#/traces?filter=
filter-expression
例 - 筛选表达式
https://console.aws.amazon.com/xray/home#/traces?filter=service("api.amazon.com") { fault = true OR responsetime > 2.5 } AND annotation.foo = "bar"
例 - 筛选条件表达式(URL 编码)
https://console.aws.amazon.com/xray/home#/traces?filter=service(%22api.amazon.com%22)%20%7B%20fault%20%3D%20true%20OR%20responsetime%20%3E%202.5%20%7D%20AND%20annotation.foo%20%3D%20%22bar%22
有关筛选条件表达式的更多信息,请参阅使用过滤器表达式。
时间范围
以 ISO8601 格式指定时间长度或开始时间和结束时间。时间范围采用 UTC,最长可达 6 小时。
时间长度 - xray/home#/
page
?timeRange=range-in-minutes
例 — 过去一小时的追踪地图
https://console.aws.amazon.com/xray/home#/service-map?timeRange=PT1H
开始和结束时间 - xray/home#/
page
?timeRange=start
~end
例 - 时间范围精确到秒
https://console.aws.amazon.com/xray/home#/traces?timeRange=2023-7-01T16:00:00~2023-7-01T22:00:00
例 - 时间范围精确到分钟
https://console.aws.amazon.com/xray/home#/traces?timeRange=2023-7-01T16:00~2023-7-01T22:00
区域
指定链接 AWS 区域 到该区域的页面。如果您未指定区域,则控制台会将您重定向到最近访问过的区域。
区域 ‐ xray/home
?region=
#/region
page
例 — 美国西部(俄勒冈州)(us-west-2)的轨迹地图
https://console.aws.amazon.com/xray/home?region=us-west-2#/service-map
当您随其他查询参数一起提供区域时,区域查询在前,哈希在后,同时页面名称在前,X-Ray 特定查询在后。
例 — 美国西部(俄勒冈州)(us-west-2)最后一小时的追踪地图
https://console.aws.amazon.com/xray/home?region=us-west-2#/service-map?timeRange=PT1H
组合
例 - 使用持续时间筛选条件的最近跟踪
https://console.aws.amazon.com/xray/home#/traces?timeRange=PT15M&filter=duration%20%3E%3D%205%20AND%20duration%20%3C%3D%208
输出
-
页面 - 跟踪
-
时间范围 - 过去 15 分钟
-
筛选条件 - duration >= 5 AND duration <= 8