Quero usar o Amazon CloudWatch para monitorar os logs de contêineres do Amazon Elastic Container Service (Amazon ECS).
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Configurar o driver de log
É possível usar o console do Amazon ECS ou o editor JSON para configurar seu driver de log.
Usar o console do Amazon ECS
Conclua as seguintes etapas:
- Abra o console do Amazon ECS.
- No painel de navegação, escolha Definições de tarefas e, em seguida, Criar nova definição de tarefa.
Observação: para atualizar uma definição de tarefa, selecione a definição da tarefa e escolha Criar nova revisão.
- Na página Criar nova definição de tarefa, na seção Configuração de definição de tarefa, insira seu nome de família de definição de tarefa.
- Na seção Requisitos de infraestrutura, escolha seu tipo de lançamento.
- Na seção Contêiner, em Registro em log, escolha Usar coleta de logs.
- Para as seguintes chaves, mantenha os valores padrão. Se o campo estiver vazio, insira um valor:
awslogs-group
awslogs-region
awslogs-stream-prefix
Observação: se o grupo de logs não existir, defina o parâmetro awslogs-create-group como True.
- Certifique-se de que as permissões do perfil do AWS Identity and Access Management (AWS IAM) de execução da tarefa incluam a ação CreateLogGroup.
- Escolha Criar.
Usar o editor JSON
Para definir o parâmetro LogConfiguration na definição da tarefa do ECS, insira o modelo de definição da tarefa do ECS no editor JSON do console.
Exemplo de configuração:
"logConfiguration":
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/my-log-group",
"awslogs-region": "region-code",
"awslogs-stream-prefix": "ecs"
}
}
Observação: substitua my-log-group pelo nome do seu grupo de logs.
Para mais informações, consulte Definição de tarefas do Amazon ECS: Rotear logs para o CloudWatch e Enviar os logs do Amazon ECS para o CloudWatch.
Para mais informações sobre as opções de log, consulte as opções do Amazon CloudWatch Logs no site do Docker.
Monitorar e solucionar problemas de logs de contêineres
Analisar os logs do contêiner
Para usar o CloudWatch Logs Insights para consultar seus logs, conclua as seguintes etapas:
-
Abra o console do CloudWatch.
-
No painel de navegação, escolha Logs.
-
Escolha Logs Insights.
-
Selecione seu grupo de logs.
-
Insira sua consulta.
-
Escolha Executar consulta.
-
Pesquise palavras-chave de erro para solucionar problemas na aplicação. Se os logs da aplicação incluírem tempos de resposta, analise as solicitações lentas.
Exemplos de consultas:
fields @timestamp, @message
| filter @message like /error/
| sort @timestamp desc
fields @timestamp, @message, response_time
| filter response_time > 2000
| sort response_time desc
Para obter mais informações, consulte Para obter mais informações, consulte Análise de dados de log com o CloudWatch Logs Insights.
Criar alertas
Conclua as seguintes etapas:
- Crie filtros de métrica a partir de eventos de logs.
- Crie um alarme do CloudWatch.
Solucionar erros
Para solucionar erros de OutOfMemory ou ConnectionTimeout, consulte Como soluciono problemas de alta utilização da CPU em uma tarefa do Amazon ECS no Fargate?
Para solucionar um grande volume de códigos de status HTTP 5xx, consulte HTTP 500: Erro interno do servidor.
Integrar-se aos serviços da AWS
Use assinaturas para obter acesso a um feed em tempo real de eventos de logs do CloudWatch Logs. O CloudWatch entrega eventos de logs para serviços como um stream do Amazon Kinesis ou o AWS Lambda para processar, analisar ou carregar em outros sistemas.
Controle os custos do CloudWatch Logs
Alterar as políticas de retenção
É uma prática recomendada usar períodos de retenção mais curtos em ambientes de desenvolvimento e reter logs por mais tempo em ambientes de produção.
É possível escolher um período de retenção que varia de 1 dia a 10 anos ou reter logs indefinidamente. Para evitar custos desnecessários, revise suas configurações de retenção para garantir que você não mantenha os logs por mais tempo do que o necessário.
Para definir políticas de retenção, conclua as seguintes etapas:
- Abra o console do CloudWatch.
- No painel de navegação, escolha Logs.
- Escolha Grupos de logs.
- Selecione seu grupo de logs.
- Escolha Ações e, em seguida, Editar configuração de retenção.
- Selecione um período de retenção. Por exemplo, escolha 1 semana, 1 mês ou um valor personalizado.
- Selecione Salvar.
Ou execute o seguinte comando put-retention-policy da AWS CLI:
aws logs put-retention-policy --log-group-name "/ecs/production-web-app" --retention-in-days retention-period>
Observação: substitua log-group-name pelo nome do seu grupo de logs e retention-period pelo seu período de retenção.
Analisar as métricas de logs
Para reduzir e otimizar seus custos, use o Explorador de Custos da AWS para analisar os custos associados a cada grupo de logs.
Exportar e arquivar logs
Para armazenamento de longo prazo a um custo menor, mova os logs para o Amazon Simple Storage Service (Amazon S3) ou para uma solução de arquivamento. Para exportar logs para o Amazon S3, use o console do CloudWatch ou execute o comando create-export-task:
aws logs create-export-task --log-group-name "/ecs/production-web-app" \--from start-timestamp --to end-timestamp --destination "s3-log-archive"
Observação: substitua log-group-name pelo nome do grupo de logs, start-timestamp pela hora de início e end-timestamp pela hora de término.
Implementar políticas de ciclo de vida do Amazon S3
Use as configurações de ciclo de vida do S3 para fazer a transição automática de logs antigos para o Amazon S3 Glacier para arquivamento ou exclusão após um tempo determinado.
Evitar excessos no registro em log
Configure sua aplicação para enviar somente logs relevantes. Para mais informações, consulte Práticas recomendadas de registro em log.
Informações relacionadas
Registro em log e monitoramento no Amazon Elastic Container Service