AWS

CloudWatch e logs na AWS: como parar de pagar por observability esquecida

Retenção de log groups, métricas custom, Contributor Insights e alternativas: FinOps para CloudWatch sem perder visibilidade de produção.

AWSCloudWatchLogsFinOps

CloudWatch é conveniente — e cresce silenciosamente quando cada microserviço loga verbose em prod com retenção infinita. Em contas médias, logs + métricas custom rivalizam com um pedaço relevante de EC2.

O que cobra no CloudWatch (visão FinOps)

ItemQuando pesa
Ingestão de logsGB/dia alto (JSON verboso, debug em prod)
ArmazenamentoRetenção longa ou “Never expire”
Métricas customAlta cardinalidade (tag por user_id)
Dashboards e alarmsMuitos alarms com alta frequência
Logs Insights queriesScans grandes em histórico longo
Contributor InsightsRegras em volumes enormes

O vilão #1 em startups: log group sem retention criado pelo Lambda/ECS/EKS default.

Auditoria em 1 hora

  1. CloudWatch → Log groups → ordene por Stored bytes
  2. Liste grupos com Retention: Never expire
  3. Cost Explorer → filtre CloudWatch últimos 30 dias
  4. Identifique top 5 fontes (Lambda, API Gateway, /aws/eks/, RDS audit)

Anote dono de cada top group — sem owner, ninguém aprova mudar retenção.

Política de retenção sugerida

AmbienteRetenção típicaNotas
dev3–7 diasDebug liberado com prazo curto
staging7–14 diasSuficiente para reproduzir bugs
prod (app)14–30 diasCompliance pode exigir mais
prod (audit/security)90–365+Só onde regulatório exige

Nunca “Never expire” por default em IaC — exija exceção documentada.

Aplicar em massa

  • Account-level data protection / retention policies (recursos novos)
  • Script boto3 para atualizar log groups legados
  • Terraform aws_cloudwatch_log_group com retention_in_days

Reduzir ingestão (na fonte)

Mais barato que pagar storage é não logar lixo:

  • Nível INFO em prod, DEBUG só temporário com flag
  • Structured logging (JSON) sem stack trace em todo request 200
  • Amostragem de access logs (1 em N requests)
  • Remover PII dos logs (reduz risco + tamanho)

Lambda e API Gateway

Lambda cobra por GB ingestado no log group /aws/lambda/.... Funções em loop ou com log verbose custam caro.

  • Revisar console.log em hot path
  • Powertools / structured log com nível configurável por env

Métricas custom: cardinalidade mata

Criar métrica Errors com dimensão UserId = milhões de valores → custo explode.

  • Prefira agregados (p95 latência por serviço, não por usuário)
  • EMF (Embedded Metric Format) com cuidado nas dimensões
  • Alarms em métricas nativas AWS quando bastarem

Logs Insights vs exportar para S3

Consultas frequentes em terabytes de log custam scan.

  • Histórico frio → export to S3 + lifecycle Glacier
  • Análise ad hoc → Insights em janela curta
  • Analytics pesado → OpenSearch/Athena em S3 (compare TCO)

Integração com S3 e lifecycle

Padrão cost-effective:

App → CloudWatch (retenção curta) → subscription filter → S3 → Glacier

Artigo: S3 lifecycle.

Alarms: quantidade e frequência

Mil alarms avaliando a cada 10s geram cobrança e ruído.

  • Consolidar alarms por serviço crítico
  • datapoints to alarm > 1 para evitar flapping
  • Delete alarms de recursos já destruídos (terraform destroy esquecido no alarm)

EKS e containers

Sidecars de log (Fluent Bit, etc.) duplicam stream se mal configurados.

  • Um agent por nó, não por pod quando possível
  • Filtrar namespaces de sistema
  • Retenção diferente por namespace (dev vs prod)

Checklist CloudWatch FinOps

  • Top 10 log groups têm retention definida?
  • Nenhum “Never expire” sem aprovação?
  • Debug desligado em prod por padrão?
  • Métricas custom sem dimensão de alta cardinalidade?
  • Alarms órfãos removidos?
  • Custo CloudWatch no budget mensal?

Leitura relacionada


Por Mauricio Nascimento de Oliveira.

Publicar no LinkedIn

Abre o LinkedIn com título, início do artigo e link. Você pode editar antes de publicar.

Ver texto da publicação
CloudWatch e logs na AWS: como parar de pagar por observability esquecida

CloudWatch é conveniente — e cresce silenciosamente quando cada microserviço loga verbose em prod com retenção infinita. Em contas médias, logs + métricas custom rivalizam com um pedaço relevante de EC2.

👉 Leia o artigo completo: https://finopspro.com.br/blog/cloudwatch-logs-custos-aws-finops

— FinOps Pro
Publicar no LinkedIn Só o link

Artigos Relacionados