Solução de problemas com Logs de ações do Amazon ECS
Logs de ações ajudam a diagnosticar problemas, fornecendo registros detalhados das operações iniciadas pelo serviço Amazon ECS. Cada entrada de log contém um carimbo de data/hora, nível de log, nome do evento e uma carga útil detalhada com contexto sobre o que aconteceu e o motivo. Este tópico trata de cenários comuns de solução de problemas e fornece consultas prontas para uso do CloudWatch Logs Insights.
Noções básicas sobre os níveis de log
Logs de ações usam três níveis de log para indicar a gravidade de cada evento:
INFO-
Operações normais, como implantação iniciada, tarefa iniciada ou recurso provisionado. Esses eventos indicam que o Amazon ECS está executando as ações conforme o esperado.
WARN-
Problemas não fatais que podem exigir atenção, como tentativas de repetição ou restrições de capacidade. O Amazon ECS continua avançando, mas a operação pode levar mais tempo do que o esperado.
ERROR-
Falhas que exigem ação, como falha na implantação, erro de provisionamento ou falha na inicialização da tarefa. Analise esses eventos para identificar a causa raiz e tomar as medidas corretivas.
dica
Comece filtrando pelos níveis de log ERROR ou WARN a fim de identificar problemas rapidamente. Em seguida, expanda sua pesquisa para eventos INFO para obter mais contexto.
Depurar uma implantação de serviço com falha
Sintomas
A implantação parou em andamento ou foi revertida automaticamente.
O que procurar
Filtre em busca de logs ERROR em que eventName contém DEPLOYMENT. Verifique na carga útil detail o ARN da implantação, o motivo do status e a contagem de tarefas com falha.
O exemplo a seguir mostra uma falha de implantação em que nenhum candidato à reversão estava disponível:
{ "resourceArn": "arn:aws:ecs:us-east-1:111122223333:cluster/my-cluster", "actionSourceId": "service/my-cluster/my-service", "logLevel": "ERROR", "eventTimestamp": 1784573730986, "detail": { "statusReason": "No rollback candidate was found to run the rollback.", "serviceDeploymentArn": "arn:aws:ecs:us-east-1:111122223333:service-deployment/my-cluster/my-service/abc123def456", "status": "FAILED", "eventName": "SERVICE_DEPLOYMENT_ROLLBACK_FAILED" } }
Resolução
Verifique o campo detail.statusReason para identificar o motivo de falha das tarefas. Use a seguinte consulta do CloudWatch Logs Insights para encontrar todos os erros de implantação:
fields @timestamp, detail.statusReason | filter logLevel = "ERROR" and detail.deploymentArn like /my-cluster\/my-service/ | sort @timestamp desc | limit 20
Diagnosticar problemas de daemons gerenciados
Sintomas
O daemon não inicia nas instâncias ou a implantação do daemon travou.
O que procurar
Filtre os logs pelo ARN do daemon para encontrar eventos relacionados ao seu daemon. Também é possível filtrar por logLevel para restringir os resultados a avisos ou erros.
O exemplo a seguir mostra uma tarefa de daemon que falhou ao iniciar devido à memória insuficiente na instância de destino:
{ "timestamp": 1719500050000, "logLevel": "WARN", "account": "123456789012", "region": "us-east-1", "resourceArn": "arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster", "actionSourceId": "arn:aws:ecs:us-east-1:123456789012:daemon/my-cluster/my-logging-daemon", "eventName": "DAEMON_TASK_START_IMPAIRED", "detail": { "statusReason": "RESOURCE:MEMORY - Unable to place daemon task on container instance: insufficient memory", "containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/my-cluster/a1b2c3d4" } }
Resolução
Verifique se as instâncias de destino contêm recursos suficientes para executar a tarefa do daemon. Se as instâncias estiverem sendo drenadas, o daemon talvez não seja iniciado até que novas instâncias estejam disponíveis. Use a seguinte consulta para filtrar eventos de um daemon específico:
fields @timestamp, logLevel, detail.statusReason | filter actionSourceId like /my-logging-daemon/ | filter logLevel in ["ERROR", "WARN"] | sort @timestamp desc | limit 20
Sobre os motivos de parada de tarefas do daemon
Sintomas
As tarefas do daemon param inesperadamente.
O que procurar
Filtre em busca de logs WARN e ERROR que contenham detalhes da falha da tarefa do daemon. Os campos a seguir na carga útil de detail fornecem informações sobre o motivo da interrupção de uma tarefa de daemon:
detail.stopCode-
Um código legível por máquina que categoriza o motivo da interrupção da tarefa.
detail.statusReason-
Uma descrição compreensível para o usuário explicando por que a tarefa foi interrompida. Esse campo não está presente em todas as entradas de logs.
detail.containerStoppedReason-
Contexto adicional sobre o contêiner específico que causou a interrupção da tarefa.
Para obter uma lista completa dos códigos de parada de tarefas e suas respectivas descrições, consulte Mensagens de erro de tarefa interrompida do Amazon ECS.
nota
Paradas esperadas de tarefas do daemon, como UserInitiated, são excluídas dos Logs de ações. Você só vê interrupções inesperadas ou relacionadas a erros em tarefas de daemons.
Consultas úteis do CloudWatch Logs Insights
Use as seguintes consultas do CloudWatch Logs Insights para investigar problemas comuns com os seus serviços do Amazon ECS.
Todos os erros na última hora
fields @timestamp, logLevel, eventName, detail.statusReason | filter logLevel = "ERROR" | sort @timestamp desc | limit 50
nota
O campo detail.statusReason não está presente em todas as entradas de logs. Se o campo estiver vazio em seus resultados, use eventName e outros campos na carga útil detail para o contexto.
Eventos para um serviço específico
fields @timestamp, logLevel, detail.statusReason | filter @message like /my-service/ | sort @timestamp desc | limit 50
Cronograma para uma implantação específica
fields @timestamp, logLevel, detail.statusReason | filter detail.deploymentArn like /my-cluster\/my-service\/abc123/ | sort @timestamp asc
Falhas de tarefas de daemon agrupadas por motivo
filter logLevel = "ERROR" and detail.stopCode != "" | stats count(*) as failureCount by detail.stopCode, detail.statusReason | sort failureCount desc | limit 20