AWS X-Ray可以配置为在多容器Beanstalk应用程序中工作吗?

时间:2018-01-05 20:21:55

标签: amazon-web-services docker elastic-beanstalk aws-xray

我正在尝试让AWS X-Ray在多容器Beanstalk应用中运行,如in the docs所述。我发现了一个社区构建的X射线容器,我可以在我的应用程序旁边运行:pottava/xray:2.0。根据{{​​1}}和docker stats,此容器正在运行并接收/发送网络流量(跟踪通过UDP发送到容器)。但AWS控制台中没有显示跟踪数据。

我没有按照建议here通过docker ps配置文件启用X-Ray。尝试此操作失败了部署到Beanstalk。实际上,多容器环境未列为supported platform。因此,虽然有很多文档提到在Beanstalk上使用X-Ray,但我不确定是否有办法在我的多Docker环境中配置它。

  • 可以在多Docker Beanstalk中配置X射线吗?如果是,怎么样?
  • 对集合进行故障排除的最佳方法是什么?交付痕迹?

2 个答案:

答案 0 :(得分:2)

您已链接到的社区构建的Docker容器应在AWS Elastic Beanstalk中按预期工作。

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

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

答案 1 :(得分:1)

<块引用>
  • 可以在多 Docker Beanstalk 中配置 X-Ray 吗?如果是,如何?

是的,但是它不像可以通过 .ebextensions 启用的 X 射线守护程序那么简单,如Running the X-Ray daemon on AWS Elastic Beanstalk 中所述。这在 Docker 平台上不起作用(没有重大的网络攻击)。根据这篇文章, Elastic Beanstalk does not provide the X-Ray daemon on the Multicontainer Docker (Amazon ECS) platform。此外,值得注意的是,文章 Configuring AWS X-Ray debugging 中的Supported Platforms 下没有列出 Docker 平台。

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

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 平台,文章中的 Scorekeep 示例 Instrumenting Amazon ECS applications 展示了在 Elastic Beanstalk 中的多容器 Docker 环境中进行检测的更详细示例。

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

一些高级技巧...

使用受支持的平台时,您可能会在 Configuring AWS X-Ray debugging 中找到其他指南。