

# Guia de instalação (AWS CLI)
<a name="container-insights-eks-classic-setup"></a>

Este guia orienta você na instalação do Enhanced Container Insights (Classic) em um cluster do Amazon EKS existente usando a AWS CLI. O complemento implanta um atendente do CloudWatch como um DaemonSet que coleta métricas de infraestrutura, logs de contêineres e dados de desempenho.

**Modo de manutenção**  
O Enhanced Container Insights (Classic) está em modo de manutenção. Para novas implantações, recomendamos o [OTel Container Insights (recomendado)](container-insights-eks-otel.md).

## Pré-requisitos
<a name="container-insights-eks-classic-setup-prereqs"></a>

Antes de começar, certifique-se de cumprir os requisitos a seguir.
+ Um cluster existente do Amazon EKS executando o Kubernetes versão 1.25 ou posterior
+ Versão da plataforma `eks.1` ou posterior
+ AWS CLI versão 2.12.0 ou posterior
+ `kubectl` configurado para comunicar-se com o cluster de destino
+ Permissões do IAM: `eks:CreateAddon`, `eks:DescribeAddon`, `iam:CreateServiceLinkedRole`, `iam:CreateRole` e `iam:AttachRolePolicy`
+ O complemento do atendente de Identidade de Pods EKS instalado no cluster ou perfis do IAM para contas de serviço (IRSA) configurados
+ Acesso à Internet de saída do cluster para os endpoints do CloudWatch

## Etapa 1: Criar o perfil do IAM
<a name="container-insights-eks-classic-setup-step1"></a>

Cria um perfil do IAM para permitir que o atendente do CloudWatch envie dados ao CloudWatch.

**Para criar um perfil do IAM para o atendente do CloudWatch**

1. Execute o seguinte comando para criar a função com uma política de confiança para a Identidade de Pods EKS.

   ```
   aws iam create-role \
     --role-name EKS-CloudWatch-Agent-Role \
     --assume-role-policy-document '{
       "Version": "2012-10-17",
       "Statement": [{
         "Effect": "Allow",
         "Principal": { "Service": "pods.eks.amazonaws.com" },
         "Action": ["sts:AssumeRole", "sts:TagSession"]
       }]
     }'
   ```

1. Anexe a política gerenciada `CloudWatchAgentServerPolicy` à função.

   ```
   aws iam attach-role-policy \
     --role-name EKS-CloudWatch-Agent-Role \
     --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
   ```

## Etapa 2: crie a associação de Identidade de Pods
<a name="container-insights-eks-classic-setup-step2"></a>

Associe o perfil do IAM à conta de serviço do atendente do CloudWatch no cluster.

**Para criar a associação da Identidade de Pods**
+ Execute o comando a seguir. Substitua {{cluster-name}} pelo nome do seu cluster do Amazon EKS e {{account-id}} pelo ID da sua conta da AWS.

  ```
  aws eks create-pod-identity-association \
    --cluster-name {{cluster-name}} \
    --namespace amazon-cloudwatch \
    --service-account cloudwatch-agent \
    --role-arn arn:aws:iam::{{account-id}}:role/EKS-CloudWatch-Agent-Role
  ```

## Etapa 3: instale o complemento Amazon CloudWatch Observability
<a name="container-insights-eks-classic-setup-step3"></a>

Instale o complemento `amazon-cloudwatch-observability` no cluster.

**Para instalar o complemento**
+ Execute o comando a seguir. Substitua {{cluster-name}} pelo nome do cluster do Amazon EKS.

  ```
  aws eks create-addon \
    --cluster-name {{cluster-name}} \
    --addon-name amazon-cloudwatch-observability \
    --addon-version {{v5.x.x-eksbuild.x}}
  ```

  Substitua {{v5.x.x-eksbuild.x}} pela versão v5.x mais recente disponível. Instalar sem `--addon-version` instala a versão mais recente (v6.2.0\+), que ativa o pipeline OTel em vez do Classic.

## Etapa 4: verifique o status do complemento
<a name="container-insights-eks-classic-setup-step4"></a>

Confirme se o complemento foi instalado com sucesso.

**Para verificar o status do complemento**
+ Execute o comando a seguir. Substitua {{cluster-name}} pelo nome do cluster do Amazon EKS.

  ```
  aws eks describe-addon \
    --cluster-name {{cluster-name}} \
    --addon-name amazon-cloudwatch-observability \
    --query "addon.status" \
    --output text
  ```

  A saída esperada é `ACTIVE`.

## Etapa 5: confirme se os pods do atendente estão em execução
<a name="container-insights-eks-classic-setup-step5"></a>

Verifique se os pods do atendente do CloudWatch estão em execução no namespace `amazon-cloudwatch`.

**Para confirmar se os pods do atendente estão em execução**
+ Execute o comando a seguir.

  ```
  kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent
  ```

  Todos os pods de atendentes devem mostrar o status `Running`.

## Verificar os dados no CloudWatch
<a name="container-insights-eks-classic-setup-verify"></a>

Depois de concluir a configuração, os dados do Container Insights aparecem no CloudWatch em 3 a 5 minutos.

**Para verificar os dados do Container Insights**

1. Abra o console do CloudWatch, em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. No painel de navegação, selecione **Container Insights**.

1. Verifique se métricas tais como `node_cpu_utilization` e `pod_memory_utilization` aparecem em seu cluster.

## Solução de problemas
<a name="container-insights-eks-classic-setup-troubleshoot"></a>

Use as orientações a seguir para resolver problemas comuns ao instalar o Enhanced Container Insights (Classic) no Amazon EKS.

### O status do complemento mostra CREATE\_FAILED ou DEGRADED
<a name="container-insights-eks-classic-setup-ts-create-failed"></a>

**Sintoma:** quando você executa `aws eks describe-addon`, o status mostra `CREATE_FAILED` ou `DEGRADED`.

**Causa:** a instalação do complemento falhou devido a permissões insuficientes do IAM ou à falta de uma associação da Identidade de Pods.

**Solução:** para resolver esse problema, siga as seguintes etapas:

1. Use o comando a seguir para verificar as informações detalhadas do erro. Substitua {{cluster-name}} pelo nome do seu cluster.

   ```
   aws eks describe-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability \
     --query "addon.health"
   ```

1. Verifique se o perfil do IAM existe e tem a `CloudWatchAgentServerPolicy` anexada.

1. Verifique se a associação da Identidade de Pods tem como alvo o namespace (`amazon-cloudwatch`) e a conta de serviço (`cloudwatch-agent`) corretos.

1. Exclua o complemento com falha e reinstale-o depois de resolver o problema.

   ```
   aws eks delete-addon \
     --cluster-name {{cluster-name}} \
     --addon-name amazon-cloudwatch-observability
   ```

### As métricas não aparecem no CloudWatch após 5 minutos
<a name="container-insights-eks-classic-setup-ts-no-metrics"></a>

**Sintoma:** os pods do atendente mostram o status `Running`, mas nenhuma métrica aparece no CloudWatch após 5 minutos.

**Causa:** o atendente não consegue enviar dados para o CloudWatch devido a restrições de rede ou permissões incorretas do IAM.

**Solução:** para resolver esse problema, siga as seguintes etapas:

1. Verifique se os grupos de segurança do VPC e as ACLs de rede permitem o tráfego de saída de HTTPS (porta 443) para endpoints do CloudWatch.

1. Verifique os logs do atendente em busca de erros de permissão ou tempos limite de conexão.

   ```
   kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=100 | grep -i "error\|timeout\|denied"
   ```

1. Verifique se o perfil do IAM tem a política `CloudWatchAgentServerPolicy` anexada e se a política de confiança permite `pods.eks.amazonaws.com`.

### Pods de atendentes bloqueados em Pending ou CrashLoopBackOff
<a name="container-insights-eks-classic-setup-ts-crashloop"></a>

**Sintoma:** quando você executa `kubectl get pods -n amazon-cloudwatch`, um ou mais pods mostram o status `Pending` ou `CrashLoopBackOff`.

**Causa:** os pods do atendente não podem ser iniciados devido à insuficiência de recursos do nó, falhas na extração de imagens ou à falta de permissões.

**Solução:** para resolver esse problema, siga as seguintes etapas:

1. Verifique os eventos do pod para obter mensagens de erro detalhadas.

   ```
   kubectl describe pod -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent
   ```

1. Verifique se seus nós têm CPU e memória suficientes disponíveis para os pods de atendentes.

1. Verifique se o complemento do atendente de Identidade de Pods EKS está instalado e em execução.

   ```
   kubectl get pods -n kube-system -l app.kubernetes.io/name=eks-pod-identity-agent
   ```

## Próximas etapas
<a name="container-insights-eks-classic-setup-next"></a>

Tudo pronto para o upgrade? Para obter instruções passo a passo sobre como migrar do Enhanced Container Insights (Classic) para o OTel Container Insights, consulte [Migre do Enhanced Container Insights (Classic) para o OTel Container Insights](container-insights-eks-migrate-from-classic.md).