Executar o daemon do X-Ray no Amazon ECS - AWS X-Ray

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Executar o daemon do X-Ray no Amazon ECS

No Amazon ECS, crie uma imagem do Docker que executa o daemon do X-Ray, carregue-a em um repositório de imagens do Docker e, em seguida, implante-a no cluster do Amazon ECS. Você pode usar os mapeamentos de porta e as configurações de modo de rede em seu arquivo de definição de tarefa para permitir que o aplicativo se comunique com o contêiner do daemon.

Usar a imagem oficial do Docker da

O X-Ray fornece uma imagem de contêiner do Docker no Amazon ECR que você pode implantar com a aplicação. Para obter mais informações, consulte Download do daemon.

exemplo Definição de tarefa
{ "name": "xray-daemon", "image": "amazon/aws-xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "hostPort": 0, "containerPort": 2000, "protocol": "udp" } ] }

Criar e compilar uma imagem do Docker

Para a configuração personalizada, pode ser necessário definir sua própria imagem do Docker.

Adicione políticas gerenciadas no perfil da tarefa para conceder ao daemon permissão para carregar dados de rastreamento no X-Ray. Para obter mais informações, consulte Conceder permissão ao daemon para enviar dados ao X-Ray.

Use um dos seguintes Dockerfiles para criar uma imagem que executa o daemon.

exemplo Dockerfile: Amazon Linux
FROM amazonlinux RUN yum install -y unzip RUN curl -o daemon.zip https://s3.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 ENTRYPOINT ["/usr/bin/xray", "-t", "0.0.0.0:2000", "-b", "0.0.0.0:2000"] EXPOSE 2000/udp EXPOSE 2000/tcp
nota

Os sinalizadores -t e -b são necessários para especificar um endereço de vinculação para ouvir o loopback de um ambiente com vários contêineres.

exemplo Dockerfile: Ubuntu

Para derivados do Debian, você também precisa instalar certificados da autoridade de certificação (CA) para evitar problemas ao baixar o instalador.

FROM ubuntu:16.04 RUN apt-get update && apt-get install -y --force-yes --no-install-recommends apt-transport-https curl ca-certificates wget && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/* RUN wget https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-3.x.deb RUN dpkg -i aws-xray-daemon-3.x.deb ENTRYPOINT ["/usr/bin/xray", "--bind=0.0.0.0:2000", "--bind-tcp=0.0.0.0:2000"] EXPOSE 2000/udp EXPOSE 2000/tcp

Na definição da tarefa, a configuração vai depender do modo de rede que você usa. A rede bridge é o padrão e pode ser usado na sua VPC padrão. Em uma rede de ponte, defina a variável de ambiente AWS_XRAY_DAEMON_ADDRESS para informar ao X-Ray SDK a qual porta de contêiner deve ser feita referência e defina a porta do host. Por exemplo, você poderia publicar a porta UDP 2000 e criar um link do contêiner do aplicativo para o contêiner do daemon.

exemplo Definição de tarefa
{ "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "hostPort": 0, "containerPort": 2000, "protocol": "udp" } ] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" }, { "name" : "AWS_XRAY_DAEMON_ADDRESS", "value" : "xray-daemon:2000" } ], "portMappings" : [ { "hostPort": 5000, "containerPort": 5000 } ], "links": [ "xray-daemon" ] }

Se você executar o seu cluster na sub-rede privada de uma VPC, poderá usar o awsvpc modo de rede para anexar uma interface de rede elástica (ENI) aos seus contêineres. Isso permite que você evite o uso de links. Omita a porta host nos mapeamentos de porta, o link e a variável de ambiente AWS_XRAY_DAEMON_ADDRESS.

exemplo Definição de tarefa da VPC
{ "family": "scorekeep", "networkMode":"awsvpc", "containerDefinitions": [ { "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "containerPort": 2000, "protocol": "udp" } ] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" } ], "portMappings" : [ { "containerPort": 5000 } ] } ] }

Configurar opções da linha de comandos no console do Amazon ECS

As opções da linha de comando substituem qualquer valor conflitante no arquivo de configuração da imagem. As opções da linha de comando normalmente são usadas para testes locais, mas também podem ser usadas por conveniência ao definir variáveis de ambiente ou para controlar o processo de inicialização.

Ao adicionar opções da linha de comando, você está atualizando o Docker CMD que é transmitido para o contêiner. Para obter mais informações, consulte a Referência de execução do Docker.

Como definir uma opção da linha de comando
  1. Abra o console clássico do Amazon ECS em https://console.aws.amazon.com/ecs/.

  2. Na barra de navegação, selecione a região que contém a definição de tarefa.

  3. No painel de navegação, selecione Task Definitions (Definições de tarefas).

  4. Na página Task Definitions, selecione a caixa à esquerda da definição de tarefa a ser revisada e escolha Create new revision.

  5. Na página Create new revision of Task Definition (Criar revisão da definição de tarefa), selecione o contêiner.

  6. Na seção ENVIRONMENT (AMBIENTE), adicione a lista separada por vírgulas das opções da linha de comando ao campo Command (Comando).

  7. Escolha Atualizar.

  8. Verifique as informações e escolha Create.

O exemplo a seguir mostra como escrever uma lista separada por vírgulas da opção da linha de comando para a opção RoleARN. A opção RoleARN assume o perfil do IAM especificado para carregar segmentos em uma conta diferente.

--role-arn, arn:aws:iam::123456789012:role/xray-cross-account

Para saber mais sobre as opções da linha de comandos disponíveis no X-Ray, consulte Configurar o daemon do AWS X-Ray.