【问题标题】:Using AWS X-Ray from a different C# class library使用来自不同 C# 类库的 AWS X-Ray
【发布时间】:2018-01-23 14:46:02
【问题描述】:

我正在尝试将 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 节点

【问题讨论】:

    标签: c# aws-xray


    【解决方案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,我们更有可能快速回复。

    谢谢,

    瑜伽士

    【讨论】:

    • 嗨,Yogi,感谢您的快速回复。从现在开始,我将在 X-Ray 论坛上发帖。我用 sn-p 编辑了我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多