本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Trace Step Functions 请求数据 AWS X-Ray
您可以使用 AWS X-Ray 可视化状态机的组件、确定性能瓶颈以及对导致错误的请求进行故障排除。您的状态机将跟踪数据发送到 X-Ray并 X-Ray 处理这些数据以生成服务地图和可搜索的追踪摘要。
X-Ray 启用状态机后,您可以在所有可用 AWS 区域的 Step Function X-Ray s 中对请求进行跟踪。这样,您就可以详细了解整个 Step Functions 请求的全貌。即使上游服务没有传递跟 X-Ray 踪 ID,Step Functions 也将向状态机执行发送跟踪。您可以使用 X-Ray 服务映射来查看请求的延迟,包括与之集成的任何 AWS 服务 X-Ray。您还可以配置采样规则,根据您指定的标准来告知要记录 X-Ray 哪些请求以及以什么采样率进行记录。
当 X-Ray 状态机未启用且上游服务未传递跟踪 ID 时,Step Functions 将不会向状态 X-Ray 机执行发送跟踪。但是,如果上游服务传递了跟踪 ID,Step Functions 随后会将跟踪发送到 X-Ray 以执行状态机。
在同时支持 Step Functions 的区域,你可以 AWS X-Ray 与 Step Functions 一起使用。有关区域支持和 Step F unctions 的信息,请参阅 Step Functions 以及X-Ray端点 X-Ray 和配额页面。
X-Ray 和 Step Functions 组合配额
您最多可以向跟踪中添加七天的数据,并查询可追溯到三十天前的跟踪数据,也就是 X-Ray 存储跟踪数据的时间长度。您的跟踪将受到 X-Ray配额的限制。除其他配额外,还为 Step Functions 状态机 X-Ray 提供了 100 KiB 的最小保证跟踪大小。如果向其提供的跟踪数据超过 100 KiB X-Ray,则可能会导致跟踪被冻结。有关其他配额的更多信息,请参阅X-Ray 终端节点和配额页面的服务配额部分 X-Ray。
设置和配置
创建状态机时启用 X-Ray 跟踪
通过在 “指定详细信息” 页面上选择 “启用 X-Ray 跟踪”,可以在创建新状态机时启用跟踪。 X-Ray
-
打开 Step Functions 控制台
,然后选择创建状态机。 -
在选择创作方法页面上,选择适当的选项来创建状态机。如果选择 “运行示例项目”,则无法在创建状态机期间启用 X-Ray 跟踪,并且需要在创建状态机后启用跟踪。 X-Ray 有关 X-Ray 在现有状态机中启用的更多信息,请参阅X-Ray 在现有状态机中启用。
选择下一步。
-
在指定详细信息页面,配置状态机。
-
选择 “启用 X-Ray 跟踪”。
你的 Step Functions 状态机现在将向其发送状态机执行 X-Ray 的跟踪。
注意
如果您选择使用现有的 IAM 角色,则应确保允许 X-Ray 写入。有关您所需权限的更多信息,请参阅以下主题。
使用的 IAM 策略 AWS X-Ray 在 Step Functions
要启用 X-Ray 跟踪,您需要一个具有适当权限的 IAM 策略来允许跟踪。如果您的状态机使用其他集成服务,则可能需要其他 IAM 策略。有关特定服务集成,请参阅 IAM 政策。
如果您为现有状态机启用 X-Ray 跟踪,则必须确保添加具有足够权限的策略来启用 X-Ray 跟踪。
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": [ "*" ] } ] }
X-Ray 在现有状态机中启用
要 X-Ray 在现有状态机中启用,请执行以下操作:
-
在 Step Functions 控制台
中,选择要为其启用跟踪的状态机。 -
选择编辑。
-
选择 “启用 X-Ray 跟踪”。
您将看到一条通知,告知您可能需要进行其他更改。
注意
在 X-Ray 为现有状态机启用时,必须确保您的 IAM 策略能够授予执行跟踪的 X-Ray 足够权限。您可以手动添加一个,也可以生成一个。有关更多信息,请参阅适用于 使用的 IAM 策略 AWS X-Ray 在 Step Functions 的 IAM 策略。
-
(可选) Auto-generate 状态机的新角色以包含 X-Ray权限。
-
选择保存。
为 Step Functions 配置 X-Ray 跟踪
首次运行启用 X-Ray 跟踪的状态机时,它将使用默认配置值进行 X-Ray 跟踪。 AWS X-Ray 不会为发送到应用程序的每个请求收集数据。相反,它会为统计上显著数量的请求收集数据。默认情况下,每秒记录第一个请求,并记录所有其他请求的5% 。每秒一个请求是容器。这可确保只要服务正在处理请求,就会每秒至少记录一个跟踪。5% 是对超出容器尺寸的额外请求进行采样的比率。
为避免在您入门时产生服务费用,保守做法是使用默认采样率。您可以配置 X-Ray 为修改默认采样规则,并配置其他规则,根据服务或请求的属性应用采样。
例如,您可能想要禁用采样并跟踪所有修改状态或句柄 AWS 账户 或事务的呼叫的请求。对于量非常大的只读调用,例如后台轮询、运行状况检查或连接维护,您采用较低的采样率仍可获取足够的数据来观察出现的任何问题。
要为状态机配置采样规则,请执行以下操作:
-
转到 X-Ray 控制台
。 -
选择采样。
-
要创建规则,请选择创建采样规则。
要编辑规则,请选择规则的名称。
要删除规则,请选择一条规则并使用操作菜单来删除它。
现有采样规则的某些部分(例如名称和优先级)无法更改。相反,您可以添加或克隆现有规则,进行所需的更改,然后使用新规则。
有关 X-Ray 采样规则以及如何配置各种参数的详细信息,请参阅在 X-Ray 控制台中配置采样规则。
集成上游服务
要将 Step Functions 工作流程(例如快速、同步和标准工作流)的执行与上游服务集成,您需要设置 traceHeader。如果您使用的是 API Gateway 中的 HTTP API,则系统会自动为您完成此操作。但是,如果您使用的是 Lambda 函数 and/or 和软件开发工具包,则需要自己设置StartExecution或 StartSyncExecutionAPI 调用。traceHeader
您必须将 traceHeader 格式指定为 \p{ASCII}∗。此外,要让 Step Functions 使用相同的跟踪 ID,必须将格式指定为 Root={TRACE_ID};Sampled={1 or 0}。如果您使用的是 Lambda 函数,请将 TRACE_ID 替换为当前分段中的跟踪 ID,如果采样模式为 true,则将“已采样”字段设为 1,如果采样模式为 false,则设为 0。以这种格式提供跟踪 ID 可确保您获得完整的追踪信息。
下面是使用 Python 编写的示例,展示如何指定 traceHeader。
state_machine = config.get_string_paramter("STATE_MACHINE_ARN") if (xray_recorder.current_subsegment() is not None and xray_recorder.current_subsegment().sampled) : trace_id = "Root={};Sampled=1".format( xray_recorder.current_subsegment().trace_id ) else: trace_id = "Root=not enabled;Sampled=0" LOGGER.info("trace %s", trace_id) # execute it response = states.start_sync_execution( stateMachineArn=state_machine, input=event['body'], name=context.aws_request_id, traceHeader=trace_id ) LOGGER.info(response)
X-Ray 在标题或有效载荷中进行跟踪
对于 X-Ray 跟踪,所有 AWS 服务都使用 HTTP 请求中的X-Amzn-Trace-Id标头。使用标头是识别跟踪的首选机制。StartExecution 和 StartSyncExecution API 操作也可以从请求有效载荷的正文使用 traceHeader。如果同时提供了两个来源,则 Step Functions 将使用标头值(首选)而不是请求正文中的值。
概念
控制 X-Ray 台
在 AWS X-Ray 控制台中,当状态机启用时 X-Ray ,您可以查看应用程序所处理的请求的服务映射和跟踪。
有关如何访问状态机执行 X-Ray控制台的信息,请参阅查看控制 X-Ray 台。
有关 X-Ray 控制台的详细信息,请参阅X-Ray 控制台文档。
分段、子分段和跟踪
分段记录有关向状态机发出的请求信息。它包含诸如状态机执行的工作之类的信息,也可能包含有关下游调用信息的子分段。
跟踪会收集单个请求生成的所有分段。
采样
为了确保高效跟踪并提供您的应用程序所服务的请求的代表性样本, X-Ray 请应用采样算法来确定跟踪了哪些请求。这可以通过编辑采样规则来更改。
指标
对于您的状态机, X-Ray 将计量调用时间、状态转换时间、Step Functions 的总体执行时间以及此执行时间的差异。可以通过 X-Ray 控制台访问此信息。
分析
AWS X-Ray Analytics 控制台是一款用于解释跟踪数据的交互式工具。您可以通过单击与当前跟踪集关联的指标和字段的图表和面板,使用越来越精细的筛选条件细化活动的数据集。可以分析状态机的执行情况来定位和识别性能问题。
有关 X-Ray 分析的详细信息,请参阅与 Analyt AWS X-Ray ics 控制台交互
Step Functions 服务集成和 X-Ray
与 Step Functions 集成的某些 AWS 服务 AWS X-Ray 通过向请求添加跟踪标头、运行 X-Ray 守护程序或做出采样决策并将跟踪数据上传到 X-Ray中来提供集成。其他人必须使用 AWS X-Ray SDK 进行检测。有些还不支持 X-Ray 集成。 X-Ray 使用与 Step Functions 的服务集成时,必须进行集成才能提供完整的跟踪数据
原生 X-Ray 支持
与原生 X-Ray 支持的服务集成包括:
-
AWS Step Functions
所需检测
需要X-Ray仪器的服务集成:
-
Amazon Elastic Container Service
-
AWS Batch
-
AWS Fargate
Client-side 仅跟踪
其他服务集成不支持 X-Ray 跟踪。但是,仍然可以收集客户端跟踪:
-
Amazon DynamoDB
-
Amazon EMR
-
亚马逊 SageMaker AI
-
AWS CodeBuild
-
AWS Glue
查看控制 X-Ray 台
X-Ray 以分段形式接收来自服务的数据。 X-Ray 将具有共同请求的区段分组为跟踪。 X-Ray 处理跟踪以生成服务图,以直观地呈现您的应用程序。
开始执行状态机后,您可以通过选择执行详细信息部分中的X-Ray 跟踪映射链接来查看其轨 X-Ray 迹。
启用 X-Ray 状态机后,可以在 X-Ray 控制台中查看状态机执行的跟踪信息。
查看 Step Functions 的 X-Ray 追踪信息
以下步骤说明了启用 X-Ray 并运行执行后,您可以在控制台中看到什么样的信息。 X-Ray 显示了使用 Amazon SQS、Amazon SNS 和 Lambda 创建回调模式示例示例项目的轨迹。
跟踪
执行完成后,您可以导航到 X-Ray 控制台,在那里您将看到 Trac X-Ray es 页面。这将显示服务图的概述以及状态机的跟踪和分段信息。
服务图
X-Ray 控制台中的服务映射可帮助您识别发生错误的服务、哪些服务存在高延迟的连接,或者查看失败请求的跟踪记录。
在跟踪视图中,您可以选择一个服务节点来查看该节点的请求,或选择两个节点之间的边缘来查看经过该连接的请求。在这里,WaitForCallBack 节点已被选中,您可以查看有关其执行和响应状态的其他信息。
您可以看到 X-Ray 服务映射如何与状态机关联。每个服务集成都有一个由 Step Functions 调用的服务映射节点,前提是它支持该节点 X-Ray。
分段和子分段
跟踪是由单个请求生成的片段集合。每个分段提供资源的名称、有关请求的详细信息以及有关所完成工作的详细信息。在跟踪页面上,您可以看到分段,如果展开,还可以看到其相应的子分段。您可以选择一个分段或子分段来查看其详细信息。
服务图上的每个节点都有不同的分段。
选择分段可提供资源的名称、有关请求的详细信息以及有关所完成工作的详细信息。
分段可以将关于已完成工作的数据细分为子分段。选择子分段可显示精细的时间信息和详细信息。子分段可以包含有关调用 AWS 服务、外部 HTTP API 或 SQL 数据库的其他详细信息。
分析
AWS X-Ray Analytics 控制台是一款用于解释跟踪数据的交互式工具。您可以使用它来更轻松地了解状态机的性能。可以通过交互式响应时间和时间序列图来探索、分析和可视化跟踪,以便协助定位性能和延迟问题。
您可以通过单击与当前跟踪集关联的指标和字段的图表和面板,使用越来越精细的筛选条件细化活动的数据集。
配置
您可以从 X-Ray 控制台配置采样和加密选项。
-
选择采样,查看有关采样率和配置的详细信息。
您可以更改采样规则来控制记录的数据量,并修改采样行为来满足您的特定要求。
-
选择加密可修改加密设置。
您可以使用默认设置,即 X-Ray 加密跟踪和静态数据,或者,如果需要,可以选择 KMS 密钥。标准 AWS KMS 会对后一种情况收费。
如果追踪视图或服务图中没有数据怎么办?
如果您已启用 X-Ray,但在 X-Ray 控制台中看不到任何数据,请检查:
-
您的 IAM 角色设置正确,允许写入 X-Ray。
-
采样规则是否允许对数据进行采样。
-
由于在应用新创建或修改的 IAM 角色之前可能会有短暂延迟,因此请在几分钟后再次检查跟踪或服务图。
-
如果您在 “ X-Ray 跟踪” 面板中看到 “未找到数据”,请检查您的 IAM 账户设置
并确保已 AWS Security Token Service 为目标区域启用该设置。有关更多信息,请参阅 IAM 用户指南 AWS STS AWS 区域中的激活和停用。