CloudWatch Metric Guide
ApproximateAgeOfOldestMessageAmazon SQS CloudWatch metric
ApproximateAgeOfOldestMessage reports how many seconds have passed since the oldest non-deleted message in the queue was sent. It measures processing lag directly, independent of how many messages are queued.
What it measures
About ApproximateAgeOfOldestMessage
ApproximateAgeOfOldestMessage reports how many seconds have passed since the oldest non-deleted message in the queue was sent. It measures processing lag directly, independent of how many messages are queued.
| Namespace | AWS/SQS |
| Metric name | ApproximateAgeOfOldestMessage |
| Unit | Seconds |
| AWS docs | Official Amazon SQS metrics reference |
Why this metric matters
Queue depth answers "how much work is queued." Age answers "is anything actually stuck." A queue can hold 50,000 visible messages and be completely healthy if consumers churn through them within seconds — high depth, low age. A queue can hold 20 messages and be in genuine crisis if consumers have been down for an hour — low depth, high age. Age is the metric with a direct line to data loss: once a message's age exceeds the queue's MessageRetentionPeriod, SQS permanently deletes it, unrecoverable.
Because the risk is tied to retention period rather than a fixed number, the threshold has to scale with your queue's own MessageRetentionPeriod setting — a value that makes sense at the 4-day default is meaningless once retention is extended to 14 days.
Recommended alarm threshold for ApproximateAgeOfOldestMessage
Recommended threshold
≥ 50% of MessageRetentionPeriod (early warning), ≥ 80% of MessageRetentionPeriod (critical)
Per AWS's SQS documentation, alarm on ApproximateAgeOfOldestMessage as it approaches the queue's configured retention period — a message that exceeds retention is permanently deleted. The two-tier 50%/80% split (ConvOps recommendation) gives time to investigate before anything is at risk, then a hard critical alarm before messages start expiring. At the 4-day (345,600s) default, that's 172,800s (2 days) and 276,480s (3.2 days).
Is your ApproximateAgeOfOldestMessage alarm already set up correctly?
The free Nuberio Audit scans your CloudWatch setup and flags missing or misconfigured alarms — including ApproximateAgeOfOldestMessage — in 5 minutes.
Common failures that show up in ApproximateAgeOfOldestMessage
When ApproximateAgeOfOldestMessage reaches an alarm threshold, these are the most common root causes — in order of how often Nuberio sees them across customer AWS accounts.
Consumer stopped entirely — no messages are being deleted while new ones keep arriving; NumberOfMessagesDeleted flatlines at zero while age climbs steadily
Consumer under-provisioned — messages are processing, just slower than they arrive; age climbs gradually rather than spiking, needing more throughput (higher Lambda concurrency, more ECS tasks) rather than a bug fix
Poison pill blocking throughput — one message fails repeatedly and cycles through visibility timeouts, competing for consumer capacity until it exhausts maxReceiveCount and moves to the DLQ
Lambda throttling — the consumer function is being throttled by concurrent execution limits, visible as "Rate Exceeded" errors in the function's logs
Downstream dependency degraded — the consumer is up but a database, API, or service it depends on is slow, so each message takes longer to process than usual
How the Nuberio Audit checks ApproximateAgeOfOldestMessage
The free Audit scans every Amazon SQS resource in your account and checks whether a ApproximateAgeOfOldestMessage alarm exists, whether its threshold and evaluation period are configured sensibly, and flags it if it's missing entirely. Every finding comes with the exact CLI command to fix it — read-only access, no credit card, results in about 5 minutes.
Nuberio Audit
Scans your CloudWatch setup for missing or misconfigured ApproximateAgeOfOldestMessage alarms. Free, 5-minute read-only scan.
Related Amazon SQS metrics
ApproximateAgeOfOldestMessage rarely fails in isolation. These metrics tend to correlate — monitor them together for complete Amazon SQS coverage.
FAQ
Frequently asked questions about ApproximateAgeOfOldestMessage
Common questions about setting up CloudWatch alarms for ApproximateAgeOfOldestMessage in Amazon SQS.
What is the recommended CloudWatch alarm threshold for ApproximateAgeOfOldestMessage?+
≥ 50% of MessageRetentionPeriod (early warning), ≥ 80% of MessageRetentionPeriod (critical). Per AWS's SQS documentation, alarm on ApproximateAgeOfOldestMessage as it approaches the queue's configured retention period — a message that exceeds retention is permanently deleted. The two-tier 50%/80% split (ConvOps recommendation) gives time to investigate before anything is at risk, then a hard critical alarm before messages start expiring. At the 4-day (345,600s) default, that's 172,800s (2 days) and 276,480s (3.2 days).
Which CloudWatch namespace does ApproximateAgeOfOldestMessage belong to?+
ApproximateAgeOfOldestMessage is published in the AWS/SQS namespace with a unit of Seconds. You can find it in the CloudWatch console under "Metrics" → "AWS/SQS". See the Amazon SQS CloudWatch metrics reference in the AWS documentation.
Does Nuberio automatically create CloudWatch alarms for ApproximateAgeOfOldestMessage?+
No — the free Nuberio Audit does not create alarms for you. It scans your CloudWatch setup and tells you which Amazon SQS resources are missing a ApproximateAgeOfOldestMessage alarm, then gives you the exact CLI command to create it yourself.
Can I use Nuberio without already having a ApproximateAgeOfOldestMessage alarm set up?+
Yes. The free Audit works whether or not you have any ApproximateAgeOfOldestMessage alarm configured — it reads the resource directly from CloudWatch and tells you which resources need one, plus the copy-paste AWS CLI command to create it.
This page is part of the CloudWatch metric guide — thresholds and debugging guidance for every metric across RDS, Lambda, ECS, ALB, EC2, and DynamoDB. To find which Amazon SQS alarms your account is missing — including ApproximateAgeOfOldestMessage — run the free CloudWatch alarm audit. The scan takes under 5 minutes and requires no account.