CloudWatch Service Limitations

Quotas, Limits & Regional Constraints

Service Limits Overview

Like all AWS services, CloudWatch has service limits (also known as quotas) to protect both the customer and the service from unintentional or malicious resource over-consumption. Understanding these limits is crucial for designing scalable and reliable monitoring solutions. Some limits are adjustable (soft limits), while others are fixed (hard limits).

Metrics Limits

API and Metric Quotas

Adjustable
PutMetricData requests

150 transactions per second (TPS).

Adjustable
GetMetricData requests

50 TPS.

Adjustable
GetMetricStatistics requests

400 TPS.

Fixed
Metrics per PutMetricData call

20 metrics maximum.

Fixed
Dimensions per metric

10 dimensions maximum.

Data Retention

Metric data retention is fixed and cannot be changed. It is designed to automatically roll up data over time.

< 60 seconds

High-resolution metrics retained for 3 hours.

60 seconds

1-minute data retained for 15 days.

300 seconds

5-minute data retained for 63 days.

3600 seconds

1-hour data retained for 455 days (15 months).

Alarms Limits

Adjustable
Alarms per Region: 10,000 (includes both standard and composite alarms).
Fixed
Child alarms per Composite Alarm: 100.
Fixed
SNS topics per alarm action: 5 topics.

CloudWatch Logs Limits

General Quotas

Fixed
Log event size

256 KB maximum.

Fixed
PutLogEvents batch size

1 MB or 10,000 events maximum.

Fixed
PutLogEvents rate

800 TPS per log stream (bursts allowed).

Adjustable
Log groups per Region

20,000.

Logs Insights Quotas

Adjustable
Concurrent queries

20 per account per Region.

Fixed
Query timeout

60 minutes maximum.

Fixed
Log groups per query

20 maximum.

Dashboards Limits

Adjustable
Dashboards per Region: 500.
Fixed
Widgets per dashboard: 500.
Fixed
Metrics per widget: 500.

Strategies for Handling Limits

Request Increases

For adjustable limits, use the AWS Service Quotas console to request an increase before you hit the limit.

Use Batching

For APIs like `PutMetricData` and `PutLogEvents`, batch as much data as possible into a single call to reduce TPS.

Implement Backoff

When making API calls, implement exponential backoff with jitter in your application to handle throttling gracefully.

Optimize Metrics

Avoid high-cardinality dimensions (like UserID or RequestID) that can cause a rapid increase in the number of unique metrics.

Archive Logs

For long-term log storage, export logs from CloudWatch to Amazon S3, which is more cost-effective for archival.