Solucionar problemas dos serviços do Amazon ECS Express Mode - Amazon Elastic Container Service

Solucionar problemas dos serviços do Amazon ECS Express Mode

Esta seção ajuda você a identificar e resolver problemas comuns ao implantar e gerenciar serviços Express Mode.

Problemas de implantação

Serviço preso no status ACTIVE ou DRAINING

Sintomas: DescribeServiceRevisions mostra que os recursos ainda estão sendo provisionados ou desprovisionados. DescribeServices mostra que a implantação não está estabilizada

Possíveis causas e soluções:

  • Permissões do IAM insuficientes: verifique se o perfil de execução de tarefa e o perfil de infraestrutura têm as permissões necessárias, conforme mostrado em suas respectivas políticas gerenciadas.

    # Check if the role has the required managed policy aws iam list-attached-role-policies --role-name ecsTaskExecutionRole
  • Falhas de extração de imagem: certifique-se de que a imagem do contêiner exista e esteja acessível.

    # Test image pull manually docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-app:latest
  • Problemas de conectividade de rede: verifique se as sub-redes têm acesso à Internet ou os endpoints da Amazon VPC para serviços da AWS.

  • Limites de recursos: verifique se sua conta tem capacidade suficiente do Fargate e não atingiu as cotas de serviço.

Etapas de diagnóstico:

  1. Use DescribeExpressGatewayService para obter sua revisão de serviço atual, seguido por DescribeServiceRevisions para ServiceRevision a fim de obter o status do provisionamento ou desprovisionamento

  2. Verifique os eventos de serviço no console do Amazon ECS para obter mensagens de erro detalhadas.

  3. Verifique se a porta do contêiner foi definida corretamente

  4. Verifique as cotas de serviço da AWS para o Amazon ECS e Fargate.

Falhas de inicialização de tarefa

Sintomas: as tarefas não são iniciadas ou param imediatamente após o início.

Causas comuns:

  • Erros da aplicação: a aplicação de contêiner é encerrada por causa de erros de configuração ou de runtime.

  • Falhas de verificação de integridade: a aplicação não responde às verificações de integridade na porta ou no caminho esperado.

  • Restrições de recursos: alocação insuficiente de CPU ou memória para a aplicação.

  • Variáveis de ambiente ou segredos ausentes: a configuração necessária não está disponível para a aplicação.

Etapas de resolução:

  1. Verifique os logs da aplicação no CloudWatch Logs e obtenha o nome do grupo de logs em DescribeServiceRevisions:

    aws logs describe-log-streams --log-group-name /ecs/express-service-my-app aws logs get-log-events --log-group-name /ecs/express-service-my-app --log-stream-name stream-name
  2. Verifique se o caminho da verificação de integridade retorna o status HTTP 200.

  3. Teste a imagem do contêiner localmente para garantir que ela seja iniciada corretamente.

  4. Revise e ajuste as alocações de CPU e memória, se necessário.

Problemas de conectividade

Aplicação inacessível via balanceador de carga

Sintomas: o URL da aplicação retorna tempos limite ou erros de conexão.

Etapas de solução de problemas:

  1. Confirme se seus recursos concluíram o provisionamento

  2. Verifique se as tarefas estão em execução e se estão íntegras:

    aws ecs describe-services --cluster my-cluster --services my-express-service
  3. Verifique a integridade do grupo de destino do Application Load Balancer:

    aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account:targetgroup/name/id
  4. Verifique se a aplicação está atendendo na porta correta dentro do contêiner.

Problemas de performance

Mostrar tempos de resposta

Sintomas: as respostas da aplicação são mais lentas do que o esperado.

Abordagem diagnóstica:

  1. Monitorar utilização de CPU e memória:

    # Check CloudWatch metrics for the service aws cloudwatch get-metric-statistics \ --namespace AWS/ECS \ --metric-name CPUUtilization \ --dimensions Name=ServiceName,Value=my-express-service Name=ClusterName,Value=my-cluster \ --start-time 2024-01-01T00:00:00Z \ --end-time 2024-01-01T01:00:00Z \ --period 300 \ --statistics Average
  2. Analise os logs da aplicação em busca de erros ou avisos de performance.

  3. Verifique se o ajuste de escala automático está respondendo corretamente à carga.

  4. Analise as métricas do balanceador de carga para distribuição de solicitações.

Estratégias de otimização:

  • Aumente a alocação de CPU ou memória se os recursos estiverem limitados.

  • Ajuste os limites de escala automática para aumentar a escala horizontalmente mais cedo.

  • Otimize o código da aplicação e as consultas ao banco de dados.

O ajuste de escala automático não está funcionando conforme o esperado

Sintomas: o serviço não aumenta a escala verticalmente durante carga alta ou não a reduz durante carga baixa.

Etapas de solução de problemas:

  1. Verifique as políticas de ajuste de escala automático e suas configurações:

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-express-service
  2. Analise as métricas do CloudWatch para garantir que os acionadores de ajuste de escala sejam atendidos.

  3. Verifique se o serviço tem permissão para escalar (verifique os perfis do IAM).

  4. Verifique todas as atividades de ajuste de escala e seus resultados.

Ferramentas de monitoramento e depuração

Usar o CloudWatch Container Insights

Habilitar o Container Insights para monitoramento abrangente:

aws ecs put-account-setting --name containerInsights --value enabled

O Container Insights fornece:

  • Métricas de CPU, memória, disco e rede

  • Painéis de monitoramento de performance

  • Correlação e análise de log

  • Detecção de anomalias