View a markdown version of this page

亚马逊 SNS 和 AWS X-Ray - AWS X-Ray

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

亚马逊 SNS 和 AWS X-Ray

您可以 AWS X-Ray 与亚马逊简单通知服务 (Amazon SNS) 配合使用,在请求通过您的 SNS 主题传送到您的SNS-supported订阅服务时跟踪和分析这些请求。使用 Amazon SNS X-Ray 跟踪来分析您的消息及其后端服务的延迟,例如请求在一个主题上花费了多长时间,以及将消息传送到每个主题的订阅所花费的时间。亚马逊 SNS 支持 X-Ray 跟踪标准和 FIFO 主题。

如果您通过已安装工具的服务向 Amazon SNS 主题发布内容,则 Amazon SNS 会将跟踪上下文从发布商传递给订阅者。 X-Ray此外,您可以开启主动跟踪,将有关您的 Amazon SNS 订阅的区段数据发送到 X-Ray 从装有工具的 SNS 客户端发布的消息。使用 Amazon SNS 控制台为某个 Amazon SNS 主题打开活动跟踪,或通过使用 Amazon SNS API 或 CLI。请参阅检测应用程序,详细了解如何检测 SNS 客户端。

配置 Amazon SNS 活动跟踪

您可以使用亚马逊 SNS 控制台或 AWS CLI 或 SDK 来配置 Amazon SNS 主动跟踪。

当您使用亚马逊 SNS 控制台时,亚马逊 SNS 会尝试为 SNS 的呼叫创建必要的权限。 X-Ray如果您没有足够的权限修改 X-Ray 资源策略,则该尝试可能会被拒绝。有关这些权限的更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的 Amazon SNS 中的标识和访问管理和 Amazon SNS 访问控制示例。如需了解如何使用 Amazon SNS 控制台打开活动跟踪的更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的在 Amazon SNS 主题上启用活动跟踪。

使用 AWS CLI 或 SDK 开启主动跟踪时,必须使用基于资源的策略手动配置权限。用于PutResourcePolicy配置必要的基于资源 X-Ray 的策略,以允许 Amazon SNS 向发送跟踪。 X-Ray

例 Amazon SNS 主动跟踪的 X-Ray 基于资源的策略示例

此示例策略文档指定了 Amazon SNS 向其发送跟踪数据所需的权限: X-Ray

{ Version: "2012-10-17", Statement: [ { Sid: "SNSAccess", Effect: Allow, Principal: { Service: "sns.amazonaws.com", }, Action: [ "xray:PutTraceSegments", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], Resource: "*", Condition: { StringEquals: { "aws:SourceAccount": "account-id" }, StringLike: { "aws:SourceArn": "arn:partition:sns:region:account-id:topic-name" } } } ] }

使用 CLI 创建基于资源的策略,授予 Amazon SNS 向以下发送跟踪数据的权限: X-Ray

aws xray put-resource-policy --policy-name MyResourcePolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "SNSAccess", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "xray:PutTraceSegments", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "StringLike": { "aws:SourceArn": "arn:partition:sns:region:account-id:topic-name" } } } ] }'

要使用这些示例,请将partitionregionaccount-id、和topic-name替换为您的特定 AWS 分区、区域、账户 ID 和 Amazon SNS 主题名称。要向所有 Amazon SNS 主题授予向其发送跟踪数据的权限 X-Ray,请将主题名称替*换为。

在控制台中查看 Amazon SNS 发布商和订阅者的踪迹 X-Ray

使用 X-Ray 控制台查看跟踪地图和追踪详细信息,这些详细信息显示了 Amazon SNS 发布商和订阅者的关联视图。当为某个主题启用 Amazon SNS 主动跟踪时, X-Ray 跟踪映射和追踪详细信息地图会显示 Amazon SNS 发布者、亚马逊 SNS 主题和下游订阅者的连接节点:

包含 Amazon SNS 发布者和订阅用户的跟踪地图

选择跨越 Amazon SNS 发布商和订阅者的追踪后, X-Ray 追踪详情页面会显示追踪详细信息地图和区段时间表。

例显示 Amazon SNS 发布者和订阅订阅用户的时间线示例

此示例显示的时间线中包含向某个 Amazon SNS 主题发送一条消息的 Amazon SNS 发布者,由 Amazon SNS 订阅用户处理。

显示 Amazon SNS 发布者和订阅订阅用户的分段时间线

上面的示例时间线提供有关 Amazon SNS 消息流的详细信息:

  • SNS 分段代表从客户端发出的 Publish API 调用的往返持续时间。

  • myTopic 分段代表 Amazon SNS 响应发布请求的延迟。

  • SQS 子分段表示 Amazon SNS 将消息发布到 Amazon SQS 队列所花费的往返时间。

  • MyTopic 分段和 SQS 子分段之间的时间代表这条消息在 Amazon SNS 系统中花费的时间。

例包含批处理的 Amazon SNS 消息的时间线示例

如果在一个跟踪里批处理多条 Amazon SNS 消息,则分段时间线中会显示代表被处理的每条消息的分段。

显示 Amazon SNS 批量消息的分段时间线