我可以在同一个 ECS 容器上 运行 aws-xray 吗?

Can I run aws-xray on the same ECS container?

我不想仅仅为了启用 X-Ray 而部署整个其他 ECS 服务。我希望我可以 运行 X-Ray 在与我的应用程序相同的 docker 容器上,我原以为这是 运行 宁它的首选方式。我知道如果我的容器死了,可能会有一些数据丢失。但我不太关心这个,我试图阻止这种只提供额外 analytical/logging 功能的额外服务的扩散,我已经有一个我不满意的 logstash 容器,我的感觉是应用程序他们自己应该能够做这种事情。

虽然我们有 X-Ray 守护进程的 Dockerhub 映像,但您绝对可以 运行 守护进程与您的应用程序位于同一 docker 容器中 - 这应该不是问题。

这是典型的守护进程设置 docker 文件和任务定义说明: https://docs.aws.amazon.com/xray/latest/devguide/xray-daemon-ecs.html

我想您可以简单地省略守护进程周围的任务定义属性,因为它会 运行 在您的应用程序旁边本地运行 - 这些根本不会被使用。

所以我认为正确的方法是使用 supervisord,请参阅 link 的示例,但我最终只是制作了一个非常简单的脚本:

# start.sh
/usr/bin/xray &
$CATALINA_HOME/bin/catalina.sh run

然后有一个 Dockerfile:

FROM tomcat:9-jdk11-openjdk

RUN apt-get install -y unzip
RUN curl -o daemon.zip https://s3.dualstack.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-linux-3.x.zip
RUN unzip daemon.zip && cp xray /usr/bin/xray

# COPY APPLICATION
# TODO

COPY start.sh /usr/bin/start.sh
RUN chmod +x /usr/bin/start.sh

CMD ["/bin/bash", "/usr/bin/start.sh"]

我想下次我会考虑使用 supervisord