使用来自不同C#类库的AWS X-Ray

时间:2018-01-23 14:46:02

标签: c# aws-xray

我正在尝试将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);

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

这不起作用。如果我在微服务中编写相同的代码,那么它可以工作,我可以在AWS控制台的X射线图中看到DynamoDb节点

1 个答案:

答案 0 :(得分: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 specific forum,我们就更有可能快速回复以后的帖子。

谢谢,

瑜珈