Skip to main content

EC2 na prática: Monitoramento com CloudWatch

Manual passo a passo para monitorar a saúde e o desempenho de uma instância EC2 usando o CloudWatch: status checks, métricas padrão, métricas de memória/disco com o agente, e alarmes com ação automática.

Pré-requisito: uma instância EC2 em estado running (ver manual 01) e acesso SSH a ela.


Parte 1: Status checks​

Toda instância é avaliada automaticamente pela AWS em dois testes de saúde, visíveis na aba Status checks da instância.

CheckO que testaFalha típicaAção da AWS
System status checkA infraestrutura por trás da instância (host físico, rede, energia)Problema de hardware no host da AWSReiniciar em outro host resolve, geralmente automático
Instance status checkO sistema operacional da própria instânciaKernel travado, disco cheio, falha de rede internaReboot manual costuma resolver

1.1 Consultar os status checks​

  1. Console EC2 → Instances → selecione a instância.
  2. Aba Status checks: o valor ideal é 2/2 checks passed.
  3. Se algum check falhar, clique nele para ver detalhes e o histórico.

💡 Esses dois checks são gratuitos e vêm ativos por padrão em toda instância, sem configuração nenhuma.


Parte 2: Métricas básicas do CloudWatch​

Mesmo sem instalar nada, toda instância já envia métricas de infraestrutura ao CloudWatch a cada 5 minutos.

2.1 Visualizar as métricas​

  1. Console EC2 → Instances → selecione a instância → aba Monitoring.
  2. Observe os gráficos disponíveis:
MétricaO que mostra
CPUUtilizationPercentual de uso de CPU
NetworkIn / NetworkOutBytes recebidos/enviados pela interface de rede
DiskReadOps / DiskWriteOpsOperações de leitura/escrita no disco (EBS)
StatusCheckFailed0 (saudável) ou 1 (algum status check falhou)

⚠️ Repare que não existe métrica de uso de memória (RAM) nem de espaço em disco (percentual usado) nessa lista padrão. O CloudWatch básico enxerga a instância "de fora" (nível de hipervisor), e memória/disco só existem "de dentro" do sistema operacional.

2.2 Monitoramento detalhado (opcional)​

Por padrão, as métricas chegam a cada 5 minutos. Para granularidade de 1 minuto:

  1. Instance settings → Manage detailed monitoring → Enable.

💰 O monitoramento detalhado tem custo adicional por métrica. Para o dia a dia, os 5 minutos padrão costumam ser suficientes.


Parte 3: Métricas de memória e disco com o CloudWatch Agent​

Para ver RAM e uso real de disco, é preciso instalar o CloudWatch Agent dentro da instância. Ele lê os dados do próprio sistema operacional e os envia como métricas customizadas.

3.1 Instalar o agente​

Na sessão SSH da instância:

sudo apt update
sudo apt install -y amazon-cloudwatch-agent

3.2 Configurar o agente​

O jeito mais simples é usar o assistente interativo:

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

Responda às perguntas padrão (aceite os valores sugeridos). Ao final, o wizard gera um arquivo de configuração e pergunta se deseja salvá-lo. Diga que sim.

💡 Se preferir pular o wizard, um arquivo mínimo em /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json habilitando mem_used_percent e disk_used_percent já resolve para o exercício.

3.3 Iniciar o agente​

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config -m ec2 \
-c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s

Verifique que está rodando:

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status

⚠️ O agente precisa de uma IAM Role com a política CloudWatchAgentServerPolicy anexada à instância para conseguir enviar as métricas (ver manual 05, Parte 2). Sem essa permissão, o agente roda mas as métricas nunca aparecem no console.

3.4 Ver as novas métricas​

  1. Console CloudWatch → menu lateral Metrics → All metrics.
  2. Procure o namespace CWAgent.
  3. Localize mem_used_percent e disk_used_percent da sua instância.

Parte 4: Alarmes​

Um alarme observa uma métrica ao longo do tempo e dispara uma ação quando ela cruza um limite.

4.1 Criar um alarme de CPU alta​

  1. Console CloudWatch → Alarms → All alarms → Create alarm.
  2. Select metric → EC2 → Per-Instance Metrics → selecione CPUUtilization da sua instância.
  3. Em Conditions:
    • Threshold type: Static
    • Whenever CPUUtilization is: Greater than 70
  4. Em Period, mantenha 5 minutes e Datapoints to alarm: 2 out of 2 (evita alarme por um pico isolado).
  5. Next.

4.2 Definir a notificação​

  1. Em Notification, crie um novo tópico SNS (ex.: alerta-cpu-alta).
  2. Informe seu e-mail em Email endpoints.
  3. Next, confirme os dados e Create alarm.
  4. Confira sua caixa de entrada e clique em Confirm subscription no e-mail da AWS (obrigatório, senão o alarme não notifica ninguém).

4.3 Ação automática (bônus)​

Além de notificar, um alarme pode agir sozinho sobre a instância:

  1. Ao criar o alarme, em EC2 action (ou editando um alarme existente), escolha:
    • Stop this instance: economiza custo quando a máquina fica ociosa.
    • Reboot this instance: útil combinado ao StatusCheckFailed, para tentar recuperação automática.
    • Recover this instance: migra a instância para um host novo em falha de hardware (funciona só com StatusCheckFailed do tipo system).

💡 Equivalente on-prem: uma regra de monitoramento (Zabbix, Nagios, PRTG) que dispara e-mail e, opcionalmente, um script de auto-remediação. A diferença é que aqui a ação roda dentro da própria nuvem, sem servidor de monitoramento para manter.

4.4 Testar o alarme (opcional)​

Gere carga de CPU na instância para forçar o disparo:

sudo apt install -y stress
stress --cpu 2 --timeout 600

Acompanhe em CloudWatch → Alarms: o estado muda de OK para In alarm alguns minutos depois, e o e-mail de notificação chega.


Limpeza do laboratório​

  1. CloudWatch → Alarms: delete o alarme de teste.
  2. CloudWatch → Metrics → CWAgent: as métricas somem sozinhas após alguns dias sem novos dados; não é preciso apagar manualmente.
  3. Se quiser parar o agente sem remover: sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop.
  4. Encerre a instância de teste se ela não for mais necessária (ver manual 01, Parte 11).

Resumo dos conceitos deste manual​

ConceitoO que é
System status checkSaúde do host físico por trás da instância
Instance status checkSaúde do sistema operacional da instância
Métrica padrão do CloudWatchDado de infraestrutura enviado automaticamente a cada 5 minutos, sem agente
CloudWatch AgentSoftware instalado na instância para expor métricas internas, como memória e disco
AlarmeRegra que observa uma métrica e dispara notificação e/ou ação automática ao cruzar um limite
SNSServiço usado pelo alarme para enviar a notificação (e-mail, SMS, etc.)