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.
| Check | O que testa | Falha típica | Ação da AWS |
|---|---|---|---|
| System status check | A infraestrutura por trás da instância (host físico, rede, energia) | Problema de hardware no host da AWS | Reiniciar em outro host resolve, geralmente automático |
| Instance status check | O sistema operacional da própria instância | Kernel travado, disco cheio, falha de rede interna | Reboot manual costuma resolver |
1.1 Consultar os status checks
- Console EC2 → Instances → selecione a instância.
- Aba Status checks: o valor ideal é
2/2 checks passed. - 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
- Console EC2 → Instances → selecione a instância → aba Monitoring.
- Observe os gráficos disponíveis:
| Métrica | O que mostra |
|---|---|
CPUUtilization | Percentual de uso de CPU |
NetworkIn / NetworkOut | Bytes recebidos/enviados pela interface de rede |
DiskReadOps / DiskWriteOps | Operações de leitura/escrita no disco (EBS) |
StatusCheckFailed | 0 (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:
- 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.jsonhabilitandomem_used_percentedisk_used_percentjá 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
CloudWatchAgentServerPolicyanexada à 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
- Console CloudWatch → menu lateral Metrics → All metrics.
- Procure o namespace CWAgent.
- Localize
mem_used_percentedisk_used_percentda 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
- Console CloudWatch → Alarms → All alarms → Create alarm.
- Select metric → EC2 → Per-Instance Metrics → selecione
CPUUtilizationda sua instância. - Em Conditions:
- Threshold type:
Static - Whenever CPUUtilization is:
Greater than70
- Threshold type:
- Em Period, mantenha
5 minutese Datapoints to alarm:2 out of 2(evita alarme por um pico isolado). - Next.
4.2 Definir a notificação
- Em Notification, crie um novo tópico SNS (ex.:
alerta-cpu-alta). - Informe seu e-mail em Email endpoints.
- Next, confirme os dados e Create alarm.
- 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:
- 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
StatusCheckFaileddo 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
- CloudWatch → Alarms: delete o alarme de teste.
- CloudWatch → Metrics → CWAgent: as métricas somem sozinhas após alguns dias sem novos dados; não é preciso apagar manualmente.
- Se quiser parar o agente sem remover:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a stop. - Encerre a instância de teste se ela não for mais necessária (ver manual 01, Parte 11).
Resumo dos conceitos deste manual
| Conceito | O que é |
|---|---|
| System status check | Saúde do host físico por trás da instância |
| Instance status check | Saúde do sistema operacional da instância |
| Métrica padrão do CloudWatch | Dado de infraestrutura enviado automaticamente a cada 5 minutos, sem agente |
| CloudWatch Agent | Software instalado na instância para expor métricas internas, como memória e disco |
| Alarme | Regra que observa uma métrica e dispara notificação e/ou ação automática ao cruzar um limite |
| SNS | Serviço usado pelo alarme para enviar a notificação (e-mail, SMS, etc.) |