Stack de ferramentas
Nativo AWS (baseline grátis):
AWS Cost Anomaly Detection # ML sobre usage data
AWS Budgets + Budgets Actions # threshold alert + auto-action
Cost Explorer # exploração ad-hoc
CUR (Cost & Usage Report) # raw data em S3
3rd-party (escala multi-cloud / granularidade):
Vantage # UX rico + alerts granulares, multi-cloud
CloudZero # per-feature/customer tracking
Datadog Cloud Cost # integra com APM, per-service real-time
CloudHealth # enterprise-grade governance
Integração com observability:
OpenTelemetry + Prometheus custom metrics
Cost por span/trace (link cost a request IDs)
Dashboards Grafana combinando cost + performanceArquitetura de alerting saudável
Tier 1 — Pager (>$10k/dia desvio):
AWS Cost Anomaly Detection HIGH severity
→ SNS → PagerDuty
Ações: team lead, FinOps, potencial incident
Tier 2 — Async notification (>$1k/dia desvio):
→ SNS → Slack channel #cost-alerts
Review diária async pelo time owner
Tier 3 — Dashboard apenas (noise-level):
Visível em Grafana/Datadog, sem push
Review semanal em FinOps meeting
Routing:
Por tag team/service (detectar dono do recurso)
Cost Categories definem "cost center" lógico
Fallback: default channel FinOpsConfiguração concreta
AWS Cost Anomaly Detection tem 3 tipos de monitor: AWS services (cada serviço monitored isolado), linked accounts (per account), cost categories (por agrupamento lógico). Recomendado: monitor AWS services globais + um por linked account crítico. Thresholds: $ absolute ou % de desvio. Frequency: daily melhor que weekly (reação mais rápida).
# Cria anomaly monitor por serviço + subscription diária
aws ce create-anomaly-monitor --anomaly-monitor '{
"MonitorName": "all-services-monitor",
"MonitorType": "DIMENSIONAL",
"MonitorDimension": "SERVICE"
}'
aws ce create-anomaly-subscription --anomaly-subscription '{
"SubscriptionName": "team-alerts",
"MonitorArnList": ["arn:aws:ce::...:anomalymonitor/xxx"],
"Subscribers": [{"Type":"SNS","Address":"arn:aws:sns:...:cost-alerts"}],
"ThresholdExpression": {
"Dimensions": {
"Key": "ANOMALY_TOTAL_IMPACT_ABSOLUTE",
"Values": ["1000"],
"MatchOptions": ["GREATER_THAN_OR_EQUAL"]
}
},
"Frequency": "DAILY"
}'✅
Regra de ouro: cada alert deve ter owner identificado e ação esperada. Se o alert dispara e ninguém sabe o que fazer, o alert está mal configurado. Revisão trimestral ajusta thresholds conforme baseline evolui.