1

我正在尝试将 AWS X-Ray 集成到我的一个应用程序中,但我感到很沮丧。我觉得亚马逊的文档在示例方面有点缺乏,但希望你们中的一些人能帮助我。

我的主要应用程序是一个用 C# 构建的 Web API 微服务。我有一个单独的客户端调用微服务,然后微服务与 1)第三方 API 和 2)一些 AWS 服务(如 DynamoDb 和 SNS)进行通信。此外,我围绕 AWS 服务构建了一个包装库,因此我没有直接调用 AWSDynamoDBClient,而是通过我的包装器调用它。

在 AWS X-Ray 控制台上,我可以查看到/来自我的微服务的所有传入和传出调用。但是我没有看到 DynamoDb 的任何内容。如果我直接在我的微服务中创建 AWSDynamoDBClient(绕过包装器),那么我会按预期看到所有流量。但是一旦我通过包装器调用它,就什么也没有发生。

我什至尝试将AWSXRayRecorder.Instance我的微服务注入到我的包装器中,但仍然没有。我不确定我做错了什么,在这一点上我有点不知所措。

有什么建议么?

编辑: 在我的 AWS 包装库中,我正在执行以下操作:

client = new AmazonDynamoDBClient(); new AWSSdkTracingHandler(recorder).AddEventHandler(client);

recorder正在AWSXRayRecorder.Instance从调用微服务注入(我不确定是否有必要像这样传递它,或者我是否可以AWSXRayRecorder.Instance直接从库中调用)。

这行不通。如果我在微服务中编写相同的代码,那么它可以工作,并且我可以在 AWS 控制台的 X-Ray 图中看到 DynamoDb 节点

4

1 回答 1

1

您能否详细描述一下您如何使用 AWS X-Ray 配置包装客户端。通常,以下是注册方式:

var ddbClient = new AmazonDynamoDBClient(RegionEndpoint.USEast1); new AwsSdkTracingHandler(AWSXRayRecorder.Instance).AddEventHandler(client);

需要注册“客户端”(AmazonDynamoDBClient)。创建、注册 X-Ray 并在应用程序中使用的客户端是否相同?

我们(AWS X-Ray 团队)在 AWS X-Ray 官方论坛上非常活跃。如果将来发布到X-Ray 特定论坛的帖子,我们更有可能快速回复它们。

谢谢,

瑜伽士

于 2018-01-23T20:38:25.863 回答