Por que meus logs de contêiner do Amazon ECS não são entregues ao CloudWatch Logs?
Não consigo encontrar os logs de contêineres da minha tarefa do Amazon Elastic Container Service (Amazon ECS) no Amazon CloudWatch Logs.
Breve descrição
Seus logs de contêiner do Amazon ECS podem não ser entregues ao CloudWatch Logs por um dos seguintes motivos:
- O driver de log awslogs não está configurado corretamente nas definições de tarefas do Amazon ECS.
- O perfil do AWS Identity and Access Management (IAM) não tem as permissões necessárias.
- A rede não está configurada corretamente.
- O nível de log do contêiner não está configurado corretamente.
Resolução
O driver de log awslogs não está configurado corretamente
Para enviar as informações de log do contêiner ao CloudWatch Logs, é necessário configurar corretamente os contêineres em suas tarefas. Ao definir os parâmetros para seu contêiner, certifique-se de configurar corretamente o parâmetro logConfiguration. Se a definição da tarefa do Amazon ECS envolver vários contêineres, será necessário configurar esse parâmetro para cada contêiner. Além disso, você deve adicionar o driver de log awslogs ao parâmetro logConfiguration na sua definição de tarefa.
Para os tipos de execução do Amazon Elastic Compute Cloud (Amazon EC2), conclua as seguintes tarefas adicionais:
- Atualize sua instância de contêiner do Amazon ECS para a versão 1.9.0 ou posterior do agente de contêiner. Para obter mais informações, consulte Atualizar o agente de contêiner do Amazon ECS.
- Para instâncias de contêiner que não usam a AMI otimizada para o Amazon ECS, especifique o driver de log awslogs na instância do contêiner. Ao usar a seguinte variável de ambiente para iniciar o agente, especifique o driver de log awslogs:
ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'
Para obter mais informações, consulte Instalar o agente de contêiner do Amazon ECS.
O perfil do IAM não tem as permissões necessárias
Conclua as seguintes tarefas:
- Para o perfil do IAM da instância do contêiner do Amazon ECS, adicione as permissões logs:CreateLogStream e logs:PutLogEvents.
- Para o tipo de execução do AWS Fargate, use o perfil do IAM de execução de tarefas do Amazon ECS com as permissões logs:CreateLogStream e logs:PutLogEvents. Para obter mais informações, consulte Função do IAM de execução de tarefas do Amazon ECS.
- Para o tipo de execução do Amazon EC2, verifique o seguinte:
Para tarefas que não usam o perfil de IAM de execução de tarefas do Amazon ECS, conceda permissões logs:CreateLogStream e logs:PutLogEvents ao perfil do IAM da instância do contêiner.
Para tarefas que usam o perfil do IAM de execução de tarefas do Amazon ECS, atualize o valor do parâmetro do agente de contêiner ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE para true.
Observação: quando você usa a AMI otimizada para o Amazon ECS com a versão 1.16.0 -1 ou posterior do pacote ecs-init, o valor padrão desse parâmetro é true. No Windows, o valor padrão desse parâmetro é false. Para obter mais informações, consulte Configuração do agente de contêiner do Amazon ECS.
A rede não está configurada corretamente
As tarefas que usam o driver de log awslogs com uma Amazon Virtual Private Cloud (Amazon VPC) sem um gateway de Internet devem criar um endpoint do CloudWatch Logs. Para obter mais informações, consulte Using CloudWatch Logs with interface VPC endpoints.
O nível de log do contêiner não está configurado corretamente
O driver de log awslogs passa os logs de contêineres que são os fluxos de E/S STDOUT e STDERR do Docker para o CloudWatch Logs. Atualize sua aplicação para enviar os logs aos fluxos de E/S STDOUT e STDERR. Configure o nível de log correto para o seu aplicação durante a criação do contêiner. Dependendo da sua aplicação, você pode definir o nível de log por meio de uma variável de ambiente ou de um arquivo de configuração.
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos