1

我正在尝试让 AWS X-Ray 在多容器 Beanstalk 应用程序中工作,如文档中所述。我找到了一个社区构建的 X-Ray 容器,可以与我的应用程序一起运行:pottava/xray:2.0。根据这个容器正在运行docker statsdocker ps接收/发送网络流量(跟踪通过 UDP 发送到容器)。但是 AWS 控制台中没有显示跟踪数据。

我没有按照这里.ebextensions/的建议通过配置文件启用 X-Ray 。尝试这样做失败了部署到 Beanstalk。事实上,多容器环境并未列为受支持的平台。因此,虽然很多文档都提到在 Beanstalk 上使用 X-Ray,但我不确定是否有办法在我的多 Docker 环境中配置它。

  • 可以在多 Docker Beanstalk 中配置 X-Ray 吗?如果是,如何?
  • 解决跟踪收集和交付问题的最佳方法是什么?
4

2 回答 2

2

您链接到的社区构建的 Docker 容器应该可以在 AWS Elastic Beanstalk 中正常工作。

您是否已将必要的AWSXrayWriteOnlyAccess托管策略添加到您的 Elastic Beanstalk 实例配置文件中?

要进一步排除故障,请从守护程序的 Docker 容器中查找 AWS X-Ray 守护程序日志。该日志将报告对 API 的任何尝试调用PutTraceSegments,以及可能导致的任何错误。在链接的 Docker 容器中,此文件位于/var/log/xray-daemon.log.

于 2018-01-15T22:44:13.447 回答
1
  • 可以在多 Docker Beanstalk 中配置 X-Ray 吗?如果是,如何?

是的,但它不像在 AWS Elastic Beanstalk 上运行 X-Ray 守护程序中所述的可以通过 .ebextensions 启用的 X-Ray 守护程序那么简单。这在 Docker 平台上不起作用(没有重大的网络黑客攻击)。根据文章, Elastic Beanstalk does not provide the X-Ray daemon on the Multicontainer Docker (Amazon ECS) platform。此外,值得注意的是,在配置 AWS X-Ray 调试一文中支持的平台下都没有列出 Docker 平台。

对于Docker平台 (Amazon Linux 2),您可以使用 docker-compose 在应用程序旁边的容器中运行 X 射线守护程序。这是docker-compose.yml我在一个简单的 API 应用程序中使用的一个简单示例:

version: "3.9"
services:
    api: # my app instrumented with the AWS X-Ray SDK
        build: 
            context: .
            dockerfile: Dockerfile-awseb
        ports:
            - "80:3000"
        environment:
            - AWS_XRAY_DAEMON_ADDRESS=xray:2000
        env_file: .env
    xray:
        image: "amazon/aws-xray-daemon"

对于该Multicontainer平台,检测Amazon ECS 应用程序一文中的 Scorekeep 示例展示了在 Elastic Beanstalk 中的多容器 Docker 环境中检测的更详细示例。

  • 解决跟踪收集和交付问题的最佳方法是什么?

一些高级技巧...

使用受支持的平台时,您可能会在配置 AWS X-Ray 调试中找到更多指导。

于 2021-04-27T17:12:02.637 回答