

# Solucionar problemas dos serviços do Amazon ECS Express Mode
<a name="express-service-troubleshooting"></a>

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

## Problemas de implantação
<a name="express-service-deployment-issues"></a>

### Serviço preso no status ACTIVE ou DRAINING
<a name="express-service-service-stuck-provisioning"></a>

**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

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

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

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

### Falhas de inicialização de tarefa
<a name="express-service-task-startup-failures"></a>

**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
   ```

1. Verifique se o caminho da verificação de integridade retorna o status HTTP 200.

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

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

## Problemas de conectividade
<a name="express-service-connectivity-issues"></a>

### Aplicação inacessível via balanceador de carga
<a name="express-service-application-unreachable"></a>

**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

1. 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
   ```

1. 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
   ```

1. Verifique se a aplicação está atendendo na porta correta dentro do contêiner.

## Problemas de performance
<a name="express-service-performance-issues"></a>

### Mostrar tempos de resposta
<a name="express-service-slow-response-times"></a>

**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
   ```

1. Analise os logs da aplicação em busca de erros ou avisos de performance.

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

1. 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
<a name="express-service-scaling-issues"></a>

**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
   ```

1. Analise as métricas do CloudWatch para garantir que os acionadores de ajuste de escala sejam atendidos.

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

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

## Ferramentas de monitoramento e depuração
<a name="express-service-monitoring-debugging"></a>

### Usar o CloudWatch Container Insights
<a name="express-service-cloudwatch-insights"></a>

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