Envio de logs do Amazon ECS para o CloudWatch - Amazon Elastic Container Service

Envio de logs do Amazon ECS para o CloudWatch

É possível configurar os contêineres das tarefas para enviar informações de log ao CloudWatch Logs. Se estiver usando o tipo de inicialização do Fargate para suas tarefas, será possível visualizar os logs a partir dos seus contêineres. Se você estiver usando o tipo de inicialização do EC2, poderá visualizar logs diferentes dos contêineres em um local conveniente e evitar que os logs de contêiner ocupem espaço em disco nas instâncias do seu contêiner.

nota

O tipo de informações registradas em log pelos contêineres em sua tarefa depende principalmente do comando ENTRYPOINT. Por padrão, os logs capturados mostram a saída do comando que você normalmente veria em um terminal interativo, se executasse o contêiner localmente, que são os fluxos de E/S STDOUT e STDERR. O driver de log awslogs simplesmente envia esses logs do Docker para o CloudWatch Logs. Para obter mais informações sobre como os logs do Docker são processados, incluindo maneiras alternativas de capturar fluxos ou dados de arquivos diferentes, consulte Visualizar logs de um contêiner ou serviço na documentação do Docker.

Para enviar logs do sistema de instâncias de contêiner do Amazon ECS para o CloudWatch Logs, consulte Monitoração de arquivos de log e Cotas de logs do CloudWatch no Guia do usuário do Amazon CloudWatch Logs.

Tipo de inicialização do Fargate

Se você estiver usando o tipo de inicialização do Fargate para suas tarefas, precisará adicionar os parâmetros awslogs necessários à sua definição de tarefa para ativar o driver de log logConfiguration. Para ter mais informações, consulte Exemplo de definição de tarefa do Amazon ECS: rotear logs para o CloudWatch.

No contêiner do Windows no Fargate, execute uma das seguintes opções quando qualquer um dos parâmetros de definição de tarefa tiver caracteres especiais, como & \ < > ^ |:

  • Adicione um escape (\) com aspas duplas em torno de toda a string do parâmetro

    Exemplo

    "awslogs-multiline-pattern": "\"^[|DEBUG|INFO|WARNING|ERROR\"",
  • Adicione um caractere de escape (^) em torno de cada caractere especial

    Exemplo

    "awslogs-multiline-pattern": "^^[^|DEBUG^|INFO^|WARNING^|ERROR",

Tipo de inicialização do EC2

Se você estiver usando o tipo de inicialização do EC2 para suas tarefas e quer ativar o driver de log awslogs, suas instâncias de contêiner do Amazon ECS precisarão pelo menos da versão 1.9.0 do agente de contêiner. Para obter informações sobre como verificar a versão do agente e atualizar para a versão mais recente, consulte Atualizar o agente de contêiner do Amazon ECS.

nota

Você deve usar uma AMI otimizada para o Amazon ECS ou uma AMI personalizada com pelo menos a versão 1.9.0-1 do pacote ecs-init. Ao usar uma AMI personalizada, você deve especificar que o driver de registro em log awslogs está disponível na instância do Amazon EC2 ao iniciar o agente, usando a variável de ambiente a seguir na instrução docker run ou arquivo de variável de ambiente.

ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"]

As instâncias de contêiner do Amazon ECS também exigem permissão de logs:CreateLogStream e logs:PutLogEvents na função do IAM com a qual você inicia as instâncias de contêiner. Caso você tenha criado a função de instância de contêiner do Amazon ECS antes que o suporte ao driver de log awslogs tenha sido habilitado no Amazon ECS, talvez seja necessário adicionar essa permissão. A ecsTaskExecutionRole é usada quando é atribuída à tarefa e provavelmente contém as permissões corretas. Para obter informações sobre o perfil de execução de tarefas, consulte Função do IAM de execução de tarefas do Amazon ECS. Se as instâncias de contêiner usarem a política do IAM gerenciada para instâncias de contêiner, as instâncias de contêiner terão provavelmente as permissões corretas. Para obter informações sobre a política do IAM gerenciada para instâncias de contêiner, consulte Função do IAM de instância de contêiner do Amazon ECS.