AWS Learning
Cost Management

AWS Cost Anomaly Detection

ML-based Cost Spike Detection, Monitors, Alert Subscriptions

Tổng quan

AWS Cost Anomaly Detection là tính năng trong AWS Billing and Cost Management dùng machine learning để phát hiện các mẫu chi tiêu AWS bất thường và gửi cảnh báo khi chi phí tăng ngoài kỳ vọng.

Dịch vụ này giúp trả lời các câu hỏi như:

  • Tại sao bill hôm nay tăng đột biến?
  • Service/account/Region/usage type nào gây tăng chi phí?
  • Có workload nào bị cấu hình sai, chạy quá mức, hoặc phát sinh usage ngoài kế hoạch không?
  • Có cần cảnh báo ngay khi anomaly xảy ra thay vì chờ cuối tháng không?
┌─────────────────────────────────────────────────────────────────┐
│                  AWS Cost Anomaly Detection                     │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Billing Data / Cost Explorer Data                              │
│              │                                                  │
│              ▼                                                  │
│  ┌───────────────────────────────┐                              │
│  │ ML-based anomaly detection    │                              │
│  │ • Seasonality                 │                              │
│  │ • Natural growth              │                              │
│  │ • Historical spend patterns   │                              │
│  └───────────────┬───────────────┘                              │
│                  │                                              │
│                  ▼                                              │
│  ┌───────────────────────────────┐                              │
│  │ Detected anomaly              │                              │
│  │ • Actual spend                │                              │
│  │ • Expected spend              │                              │
│  │ • Cost impact                 │                              │
│  │ • Root causes                 │                              │
│  └───────────────┬───────────────┘                              │
│                  │                                              │
│                  ▼                                              │
│  Email / SNS / Chat / EventBridge / User Notifications          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Vấn đề giải quyết

Nếu chỉ dùng báo cáo chi phí thủ công, bạn thường phát hiện vấn đề quá muộn:

Vấn đềHậu quả
EC2/RDS bị quên tắtBill tăng từng ngày
Data transfer tăng bất thườngKhó tìm nguyên nhân nếu không theo dõi sát
NAT Gateway hoặc CloudWatch Logs tăng đột biếnChi phí tăng nhưng không có alert sớm
Account con trong AWS Organizations phát sinh workload mớiManagement account có thể phát hiện muộn
Service mới được bật nhầmCost Explorer chỉ giúp phân tích sau khi đã phát sinh

Cost Anomaly Detection giúp phát hiện sớm các biến động bất thường thay vì chỉ đặt ngưỡng tĩnh như “vượt $1,000/tháng”.


Cách hoạt động

Luồng cơ bản:

1. Tạo Cost Monitor
   └── Xác định phần chi phí cần theo dõi
       • AWS services
       • Linked accounts
       • Cost allocation tags
       • Cost categories

2. Tạo Alert Subscription
   └── Xác định ai nhận cảnh báo, qua kênh nào, và threshold nào
       • Email
       • Amazon SNS
       • Daily summary
       • Weekly summary
       • Individual alerts

3. AWS phân tích billing data bằng ML
   └── So sánh actual spend với expected spend

4. Khi phát hiện anomaly
   └── Gửi alert nếu anomaly đạt threshold
   └── Hiển thị trong Detected anomalies
   └── Cung cấp root cause để điều tra

Theo AWS, Cost Anomaly Detection dùng dữ liệu từ Cost Explorer và có thể có độ trễ tối đa khoảng 24 giờ. Sau khi billing data được xử lý, dịch vụ chạy khoảng 3 lần mỗi ngày để kiểm tra anomaly trên net unblended cost.


Cost Monitors

Cost Monitor định nghĩa phạm vi chi phí mà bạn muốn theo dõi.

Monitor dimensions

DimensionKhi nào dùng
AWS servicesTheo dõi chi phí theo từng dịch vụ AWS, ví dụ EC2, S3, Lambda
Linked accountTheo dõi từng member account trong AWS Organizations
Cost allocation tagTheo dõi theo tag như Team, Project, Environment
Cost categoryTheo dõi theo nhóm business logic đã định nghĩa trong Cost Categories

AWS managed monitors vs customer managed monitors

Loại monitorMô tảPhù hợp khi
AWS managed monitorAWS tự động theo dõi tất cả giá trị trong dimension đã chọnMuốn coverage rộng, ít cấu hình thủ công
Customer managed monitorBạn chọn cụ thể các giá trị cần theo dõiMuốn theo dõi một số account/service/tag cụ thể

Ví dụ:

AWS managed monitor:
- Dimension: AWS services
- Tự động theo dõi tất cả AWS services có phát sinh chi phí

Customer managed monitor:
- Dimension: Linked account
- Chỉ theo dõi account A, B, C

[!NOTE] Theo AWS docs, cost monitors cho linked accounts, cost allocation tags và cost categories chỉ có thể được tạo trong management account.


Alert Subscriptions

Alert Subscription xác định cách nhận thông báo khi monitor phát hiện anomaly.

Alerting frequency

FrequencyKênhMô tả
Individual alertsAmazon SNSGửi khi anomaly được phát hiện; có thể nhận nhiều alert trong ngày
Daily summariesEmailGửi summary hằng ngày về top anomalies của ngày trước
Weekly summariesEmailGửi summary hằng tuần

Threshold

Bạn có thể cấu hình threshold để chỉ nhận cảnh báo cho anomaly đáng chú ý.

AWS hỗ trợ hai kiểu threshold chính:

Threshold typeÝ nghĩa
Absolute thresholdAlert khi cost impact vượt một số tiền cụ thể, ví dụ $100
Percentage thresholdAlert khi cost impact percentage vượt tỷ lệ cụ thể, ví dụ 40% so với expected spend

Có thể kết hợp nhiều threshold bằng logic AND hoặc OR.

Ví dụ:

Alert nếu:
- Cost impact >= $100
AND
- Cost impact percentage >= 40%

[!IMPORTANT] Nếu anomaly thấp hơn alert threshold, nó vẫn có thể xuất hiện trong tab Detected anomalies. Threshold chỉ quyết định việc gửi alert, không phải việc model có phát hiện anomaly hay không.


Detected Anomalies và Root Cause

Khi phát hiện anomaly, AWS hiển thị thông tin để điều tra:

Thành phầnÝ nghĩa
Actual spendChi phí thực tế
Expected spendChi phí AWS kỳ vọng dựa trên pattern lịch sử
Cost impactChênh lệch giữa actual và expected spend
Impact percentageTỷ lệ chênh lệch so với expected spend
Root causesCác yếu tố có khả năng gây anomaly

Root cause analysis có thể phân tích theo các chiều như:

  • AWS service
  • AWS account
  • Region
  • Usage type

Ví dụ root cause:

Anomaly: Chi phí tăng $480 so với expected spend

Root causes:
1. Service: Amazon EC2
   Account: prod-account
   Region: us-east-1
   Usage type: BoxUsage:m6i.4xlarge
   Estimated impact: $320

2. Service: NAT Gateway
   Account: analytics-account
   Region: ap-southeast-1
   Usage type: DataProcessing-Bytes
   Estimated impact: $160

Tích hợp thông báo

Cost Anomaly Detection có thể gửi alert qua nhiều kênh:

┌──────────────────────────────┐
│ Cost Anomaly Detection       │
└───────────────┬──────────────┘

        ┌───────┴────────┬───────────────┬────────────────────┐
        ▼                ▼               ▼                    ▼
      Email          Amazon SNS      EventBridge       User Notifications


                Slack / Amazon Chime
                qua AWS Chatbot hoặc
                Amazon Q Developer in chat applications

Amazon SNS

Để gửi individual alerts qua SNS, topic cần cho phép service principal của Cost Anomaly Detection publish message:

{
  "Sid": "AWSAnomalyDetectionSNSPublishingPermissions",
  "Effect": "Allow",
  "Principal": {
    "Service": "costalerts.amazonaws.com"
  },
  "Action": "SNS:Publish",
  "Resource": "arn:aws:sns:region:account-id:topic-name"
}

Có thể thêm điều kiện aws:SourceAccount hoặc aws:SourceArn để giảm rủi ro confused deputy.


Thiết lập nhanh

Các bước trong console:

Billing and Cost Management console
→ Cost Anomaly Detection
→ Cost monitors
→ Create monitor
→ Chọn monitor type
→ Tạo hoặc chọn alert subscription
→ Chọn frequency và threshold
→ Create monitor

Checklist thiết lập:

  • Bật/đã có dữ liệu Cost Explorer
  • Xác định phạm vi monitor: service, account, tag, hoặc cost category
  • Chọn AWS managed monitor nếu muốn tự động bao phủ giá trị mới
  • Chọn customer managed monitor nếu chỉ muốn theo dõi subset cụ thể
  • Tạo alert subscription
  • Đặt threshold hợp lý để tránh noise
  • Với alert realtime, dùng SNS individual alerts
  • Nếu dùng SNS encrypted topic, kiểm tra KMS key policy
  • Gửi alert vào kênh vận hành như Slack/Chime nếu team cần phản ứng nhanh

Best Practices

1. Bắt đầu với AWS managed monitor

Nếu dùng AWS Organizations, nên bắt đầu bằng managed monitor cho:

  • AWS services để phát hiện service tăng bất thường
  • Linked account để phát hiện account con phát sinh chi phí lạ

Managed monitor tự động bao phủ account/tag/category mới, giảm rủi ro quên cập nhật monitor.

2. Dùng Cost Allocation Tags cho team/project

Nếu tổ chức chargeback/showback theo team, hãy bật cost allocation tags như:

Team=platform
Team=data
Project=mobile-app
Environment=prod
Environment=dev

Sau đó tạo monitor theo tag để phát hiện team/project nào tăng chi phí bất thường.

3. Chọn threshold theo mức độ vận hành

Môi trườngGợi ý threshold
ProductionThreshold thấp hơn, alert nhanh qua SNS
Dev/TestThreshold cao hơn để tránh noise
SandboxCó thể dùng daily summary
Shared servicesKết hợp absolute + percentage threshold

4. Kết hợp với Cost Explorer

Cost Anomaly Detection phát hiện và cảnh báo. Cost Explorer giúp drill-down chi phí sâu hơn sau khi có alert.

Luồng xử lý:

Alert từ Cost Anomaly Detection
→ Xem root cause
→ Mở Cost Explorer
→ Group by Service / Account / Region / Usage Type
→ Tìm workload gây tăng chi phí
→ Remediate

5. Review anomaly định kỳ

Không chỉ xử lý alert lớn. Nên review định kỳ các anomaly nhỏ để phát hiện pattern lặp lại, ví dụ:

  • Batch job chạy sai lịch
  • Log ingestion tăng vào cuối tuần
  • Data transfer tăng theo campaign
  • Dev environment bị để chạy qua đêm

So sánh với AWS Budgets và Cost Explorer

Công cụMục đích chínhCách phát hiện
AWS Cost Anomaly DetectionPhát hiện chi phí bất thườngML so sánh actual với expected spend
AWS BudgetsCảnh báo khi vượt budget hoặc forecast vượt budgetNgưỡng tĩnh theo budget
AWS Cost ExplorerPhân tích và visualize chi phíBáo cáo, filter, group, forecast
AWS Pricing CalculatorƯớc tính chi phí trước khi triển khaiMô hình estimate thủ công

Khi nào dùng cái nào?

Tình huốngDùng
Muốn biết chi phí tháng này có vượt $5,000 khôngAWS Budgets
Muốn phát hiện EC2 tăng bất thường so với pattern bình thườngCost Anomaly Detection
Muốn phân tích service nào tốn tiền nhất 6 tháng quaCost Explorer
Muốn estimate kiến trúc trước khi deployPricing Calculator

Nên dùng kết hợp:

Pricing Calculator → Estimate trước
Budgets            → Guardrail theo ngân sách
Cost Explorer      → Phân tích chi phí
Cost Anomaly Detection → Phát hiện bất thường sớm

Lưu ý quan trọng

Điểm cần nhớChi tiết
Không realtime tuyệt đốiDữ liệu từ Cost Explorer có thể trễ tới khoảng 24 giờ
Cần dữ liệu lịch sửService mới cần dữ liệu usage lịch sử trước khi model phát hiện anomaly ổn định
Monitor thuộc account tạo raChỉ truy cập cost monitors và alert subscriptions trong account đã tạo chúng
Management accountMonitor cho linked accounts, cost allocation tags, cost categories chỉ tạo trong management account
Threshold không chặn chi phíDịch vụ chỉ cảnh báo, không tự stop resource
Không thay thế BudgetsBudgets vẫn cần cho kiểm soát ngân sách theo ngưỡng cụ thể

Theo AWS docs, với một service subscription mới, cần khoảng 10 ngày dữ liệu lịch sử service usage trước khi có thể phát hiện anomaly cho service đó.


Use Cases

1. Phát hiện EC2 tăng bất thường

Monitor: AWS services
Anomaly: Amazon EC2 tăng $700 so với expected spend
Root cause: m6i.4xlarge chạy ở us-east-1 trong prod-account
Action: Kiểm tra Auto Scaling, instance bị quên tắt, hoặc deployment mới

2. Theo dõi account con trong AWS Organizations

Monitor: Linked account
Anomaly: dev-account tăng 300% so với expected spend
Root cause: NAT Gateway data processing tăng mạnh
Action: Kiểm tra route table, private subnet traffic, data egress pattern

3. Theo dõi team bằng cost allocation tag

Monitor: Cost allocation tag Team
Anomaly: Team=data tăng chi phí S3 và Glue
Root cause: ETL job xử lý dữ liệu nhiều hơn bình thường
Action: Kiểm tra job schedule và input data volume

4. Gửi alert tới kênh vận hành

Monitor: AWS services
Alert frequency: Individual alerts
Channel: SNS → Slack/Chime
Threshold: cost impact >= $100 AND impact >= 40%
Action: FinOps/Ops xử lý trong ngày

Tóm tắt

AWS Cost Anomaly Detection dùng để phát hiện chi phí AWS bất thường bằng ML và cảnh báo sớm cho team vận hành/FinOps.

Cần nhớ:

  • Dùng Cost Monitor để chọn phạm vi theo dõi.
  • Dùng Alert Subscription để chọn người nhận, kênh nhận và threshold.
  • Hỗ trợ monitor theo AWS services, linked accounts, cost allocation tags, cost categories.
  • Alert có thể gửi qua email, Amazon SNS, chat integration, EventBridge hoặc User Notifications.
  • root cause analysis để chỉ ra service/account/Region/usage type gây tăng chi phí.
  • Không thay thế AWS Budgets; nên dùng cùng Budgets và Cost Explorer.
  • Không realtime tuyệt đối vì billing data/Cost Explorer có độ trễ.

Tài liệu tham khảo