Seu CloudWatch tem 200 alarmes e nenhum deles te acorda quando realmente importa? Você não está sozinho. A maioria dos ambientes AWS que encontro tem monitoramento demais e observabilidade de menos.

Monitoramento vs Observabilidade

Monitoramento é coletar métricas. Observabilidade é conseguir responder perguntas que você não previu.

Na prática:

  • Monitoramento: “CPU está acima de 80%”
  • Observabilidade: “Por que o checkout está lento para usuários do Nordeste às 14h?”

O CloudWatch faz os dois, mas a maioria dos times para no primeiro.

As 3 perguntas que importam

Antes de criar qualquer alarme, dashboard ou log group, responda:

  1. O serviço está respondendo? (disponibilidade)
  2. Está respondendo rápido? (latência)
  3. Está respondendo certo? (taxa de erro)

Se você consegue responder essas 3 em 10 segundos olhando um dashboard, seu monitoramento está no caminho certo. Se precisa abrir 5 telas e cruzar dados mentalmente, precisa simplificar.

Métricas essenciais por serviço

EC2

MétricaAlarme quandoPor que
StatusCheckFailed> 0 por 2 minInstância com problema de hardware/rede
CPUCreditBalance< 20 (burstable)t3/t4g vai ficar lenta
MemoryUtilization*> 85% por 5 minPrecisa do CloudWatch Agent
DiskSpaceUtilization*> 85%Disco cheio = serviço para

*Requer CloudWatch Agent instalado.

RDS

MétricaAlarme quandoPor que
FreeStorageSpace< 5 GBBanco para quando disco enche
CPUUtilization> 80% por 10 minQueries pesadas ou instância subdimensionada
DatabaseConnections> 80% do maxConnection leak ou pool mal configurado
FreeableMemory< 500 MBBanco começa a usar swap
ReplicaLag> 30 segRéplica de leitura atrasada

ALB/NLB

MétricaAlarme quandoPor que
HTTPCode_ELB_5XX_Count> 0 por 3 minLoad balancer retornando erro
TargetResponseTime (p99)> thresholdLatência percebida pelo usuário
UnHealthyHostCount> 0Target group com instâncias doentes
RequestCountqueda > 50%Possível problema de DNS ou rede

ECS/Fargate

MétricaAlarme quandoPor que
CPUUtilization (service)> 80% por 5 minPrecisa escalar
MemoryUtilization (service)> 80% por 5 minRisco de OOM kill
RunningTaskCount< DesiredCountTasks morrendo

Lambda

MétricaAlarme quandoPor que
Errors> 0 por 3 minFunção falhando
Duration (p99)> 80% do timeoutPróximo de estourar timeout
Throttles> 0Limite de concorrência atingido
ConcurrentExecutions> 80% do limitePrecisa solicitar aumento

Alarmes que fazem sentido vs ruído

O problema do alarme de CPU

“CPU acima de 80%” é o alarme mais comum e um dos menos úteis. Por que:

  • CPU alta pode ser normal (batch processing, deploy, autoscaling)
  • CPU baixa não significa que está tudo bem (pode estar travado em I/O)
  • Não te diz o impacto no usuário

Alarmes baseados em sintoma vs causa

TipoExemploValor
Sintoma (preferir)Taxa de erro 5xx > 1%Impacto direto no usuário
Sintoma (preferir)Latência p99 > 500msUsuário percebe lentidão
Causa (complementar)CPU > 90% por 15 minAjuda no diagnóstico
Causa (complementar)Disco > 90%Prevenção

Comece pelos sintomas. Adicione causas para ajudar no diagnóstico, não como alarme primário.

Anatomia de um bom alarme

NMTARoéhçumtrãnereob:is:ochopaoSkr:lN:odSdH:l-TiaT>npPPkiC1a-o%gpedeareprrr_oDaoTruratp-r3yrrg/oaedTcttaeee_tld-5aeihXpgmiXoreg_ianhCnmtotousndtdee/i1nRvemeqisunteuistgtoaCçoãuont100

Cada alarme deve ter:

  • Nome descritivo (ambiente + serviço + problema)
  • Threshold baseado em baseline real (não chute)
  • Período que evita falsos positivos
  • Ação clara (quem é notificado)
  • Link para runbook (o que fazer quando disparar)

Dashboards úteis vs dashboards bonitos

Dashboard que ninguém usa

  • 30 widgets mostrando tudo
  • Métricas sem contexto
  • Sem threshold visual
  • Precisa de 5 minutos para entender

Dashboard que salva no incidente

Três dashboards, cada um com propósito claro:

1. Dashboard Operacional (SRE)

  • Disponibilidade (%) com linha de threshold
  • Latência p99 com linha de threshold
  • Taxa de erro com linha de threshold
  • Tasks/instâncias running vs desired
  • Alarmes ativos

2. Dashboard de Infraestrutura

  • CPU, memória, disco por instância/serviço
  • Conexões de banco
  • Fila de mensagens (SQS depth)
  • Network I/O

3. Dashboard Executivo

  • Status: verde/amarelo/vermelho
  • Uptime do mês
  • Incidentes abertos
  • Resposta em 10 segundos: “está tudo bem?”

CloudWatch Logs: o mínimo necessário

1
2
3
4
5
6
# Logs que todo ambiente deveria ter
/aws/ec2/syslog              # Sistema operacional
/aws/rds/error                # Erros do banco
/aws/ecs/container-logs       # Aplicação
/aws/lambda/function-name     # Funções serverless
/aws/alb/access-logs          # Requisições HTTP (S3)

Log Insights: queries que uso toda semana

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
-- Top 10 erros na última hora
filter @message like /(?i)(error|exception|fail)/
| stats count(*) as total by @message
| sort total desc
| limit 10

-- Latência por endpoint
filter @type = "REPORT"
| stats avg(@duration) as avg_ms,
        pct(@duration, 99) as p99_ms
  by bin(5m)

-- Requisições 5xx no ALB
filter elb_status_code >= 500
| stats count(*) as errors by target_status_code, request_url
| sort errors desc
| limit 20

Checklist: comece hoje

Se você está partindo do zero ou quer reorganizar:

  1. Instale o CloudWatch Agent nas EC2 (memória e disco não vêm por padrão)
  2. Crie 3 alarmes por serviço: disponibilidade, latência, erro
  3. Configure SNS para notificações (Telegram, Slack, PagerDuty)
  4. Crie 1 dashboard operacional com as 3 métricas principais
  5. Habilite Log Insights nos log groups mais importantes
  6. Documente thresholds (por que 80%? baseado em que baseline?)
  7. Revise alarmes mensalmente (remova os que ninguém olha)

O que não monitorar

Tão importante quanto saber o que monitorar é saber o que ignorar:

  • Métricas que nunca geraram ação
  • Alarmes que são sempre silenciados
  • Dashboards que ninguém abre há 30 dias
  • Logs sem retention policy (custam dinheiro eternamente)

Cada métrica coletada, cada alarme configurado e cada log armazenado tem custo. Se não gera ação, é desperdício.


Observabilidade não é ter mais dados. É ter os dados certos, no momento certo, com contexto suficiente para agir. Comece pelas 3 perguntas, adicione complexidade conforme a necessidade, e revise regularmente. O melhor monitoramento é aquele que te acorda apenas quando realmente precisa.