Search code examples
amazon-ecsaws-xray

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


I don't want to have to deploy a whole other ECS service just to enable X-Ray. I'm hoping I can run X-Ray on the same docker container as my app, I would have thought that was the preferred way of running it. I know there might be some data loss if my container dies. But I don't much care about that, I'm trying to stop this proliferation of extra services which serve only extra analytical/logging functions, I already have a logstash container I'm not happy about, my feeling is that apps themselves should be able to do this sort of stuff.


Solution

  • So I think the proper way to do this is using supervisord, see link for an example of that, but I ended up just making a very simple script:

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

    And then having a 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"]
    
    

    I think I will look at using supervisord next time.