Friday, February 4, 2022

[SOLVED] How do you deploy aws-xray-daemon in Docker swarm?

Issue

I'm trying to deploy amazon/aws-xray-daemon to my docker swarm.

I didn't do much in terms of configuration because there's not much I can see to configure in the README.md

services:
  xrayd:
    image: amazon/aws-xray-daemon
    deploy:
      restart_policy:
        delay: 2m

I get the following in the logs

2021-02-27T04:50:38Z [Info] Initializing AWS X-Ray daemon 3.2.0
2021-02-27T04:50:38Z [Info] Using buffer memory limit of 78 MB
2021-02-27T04:50:38Z [Info] 1248 segment buffers allocated
2021-02-27T04:50:39Z [Error] Unable to retrieve the region from the EC2 instance EC2MetadataRequestError: failed to get EC2 instance identity document
caused by: RequestError: send request failed
caused by: Get http://169.254.169.254/latest/dynamic/instance-identity/document: dial tcp 169.254.169.254:80: connect: network is unreachable
2021-02-27T04:50:39Z [Error] Cannot fetch region variable from config file, environment variables and ec2 metadata.

I gave the EC2 instance full xray:* in IAM as well.


Solution

Actually found the problem. docker stack deploy does not update the network.*.internal setting. So even when I changed it to network.*.internal: false it never took the change.

I had to delete and redeploy the stack to get it working.

services:
  xrayd:
    image: amazon/aws-xray-daemon
    # command: --log-level warn
    command: --log-level error
    networks:
      - xray
    logging:
      driver: none
    deploy:
      restart_policy:
        delay: 2m
        max_attempts: 2
networks:
  xray:
    internal: false
    attachable: false


Answered By - Archimedes Trajano
Answer Checked By - David Marino (WPSolving Volunteer)