AWS DynamoDB
Monitor AWS DynamoDB tables with CloudWatch Metrics Streams for latency, throttling, capacity utilization, and replication lag
Monitor your Amazon DynamoDB tables with Last9 using CloudWatch Metrics Streams. This integration provides visibility into request latency, throttling, capacity utilization, errors, and Global Tables replication lag — with no agents to deploy.
Follow the AWS CloudWatch Metrics Stream setup guide to configure the stream, then return here for DynamoDB-specific namespace and metric details.
HTTP Endpoint URL
Set the HTTP endpoint as the following.
{{ .Metrics.StreamWriteURL }}Additional Parameters
Set the following keys and values in the Parameters section. The keys are case-sensitive.
username: {{ .Metrics.Username }}
password: {{ .Metrics.WriteToken }}
Metric Namespace
Enable AWS/DynamoDB namespace in your CloudWatch Metric Stream to send DynamoDB metrics to Last9.
For the full list of available metrics, see the AWS DynamoDB metrics and dimensions reference.
Key Metrics
Latency
| Metric | Description | Dimensions |
|---|---|---|
SuccessfulRequestLatency | Latency of successful requests. Monitor avg and max per operation to detect table design or capacity issues. | TableName, Operation |
Operations: GetItem, PutItem, UpdateItem, DeleteItem, Query, Scan, BatchGetItem, BatchWriteItem, TransactGetItems, TransactWriteItems
Throttling
Throttling is the most critical DynamoDB signal. Monitor all granularities — they expose different problems.
| Metric | Description | Dimensions |
|---|---|---|
ThrottledRequests | Requests where at least one read/write event was throttled. | TableName, Operation |
ReadThrottleEvents | Individual read events throttled. A BatchGetItem of 10 items = 10 potential events. Should always be 0. | TableName, GlobalSecondaryIndexName |
WriteThrottleEvents | Individual write events throttled. A PutItem on a table with 3 GSIs = 4 potential events. Should always be 0. | TableName, GlobalSecondaryIndexName |
ReadProvisionedThroughputThrottleEvents | Reads throttled due to provisioned capacity limits. | TableName |
WriteProvisionedThroughputThrottleEvents | Writes throttled due to provisioned capacity limits. | TableName |
ReadKeyRangeThroughputThrottleEvents | Reads throttled due to hot partition limits. A table can throttle well below its provisioned capacity if traffic is concentrated on a few partition keys. | TableName |
WriteKeyRangeThroughputThrottleEvents | Writes throttled due to hot partition limits. | TableName |
ReadMaxOnDemandThroughputThrottleEvents | Reads throttled because on-demand max throughput was exceeded. | TableName |
WriteMaxOnDemandThroughputThrottleEvents | Writes throttled because on-demand max throughput was exceeded. | TableName |
ReadAccountLimitThrottleEvents | Reads throttled due to account-level capacity limits. | — |
WriteAccountLimitThrottleEvents | Writes throttled due to account-level capacity limits. | — |
Capacity Utilization
| Metric | Description | Dimensions |
|---|---|---|
ConsumedReadCapacityUnits | Read capacity units consumed. Compare against ProvisionedReadCapacityUnits to track utilization percentage. | TableName, GlobalSecondaryIndexName |
ConsumedWriteCapacityUnits | Write capacity units consumed. | TableName, GlobalSecondaryIndexName |
ProvisionedReadCapacityUnits | Provisioned read capacity (published at 5-minute intervals). | TableName, GlobalSecondaryIndexName |
ProvisionedWriteCapacityUnits | Provisioned write capacity (published at 5-minute intervals). | TableName, GlobalSecondaryIndexName |
OnDemandMaxReadRequestUnits | Maximum on-demand read request units configured for the table. | TableName |
OnDemandMaxWriteRequestUnits | Maximum on-demand write request units configured for the table. | TableName |
AccountProvisionedReadCapacityUtilization | Percentage of provisioned read capacity used across the account. | — |
AccountProvisionedWriteCapacityUtilization | Percentage of provisioned write capacity used across the account. | — |
MaxProvisionedTableReadCapacityUtilization | Utilization of the single most-read table or GSI in the account. | — |
MaxProvisionedTableWriteCapacityUtilization | Utilization of the single most-written table or GSI in the account. | — |
Errors
| Metric | Description | Dimensions |
|---|---|---|
SystemErrors | HTTP 500 internal errors from DynamoDB. Should always be 0. | TableName, Operation |
UserErrors | HTTP 400 errors from client-side problems (bad parameters, missing tables, auth failures). Account-level aggregate. | — |
ConditionalCheckFailedRequests | Failed conditional writes where the condition expression evaluated to false. | TableName |
TransactionConflict | Item-level requests rejected due to concurrent transactional conflicts on the same items. | TableName |
Returned Data
| Metric | Description | Dimensions |
|---|---|---|
ReturnedItemCount | Items returned by Query, Scan, or ExecuteStatement. A low ratio versus items scanned indicates inefficient queries. | TableName, Operation |
TTL
| Metric | Description | Dimensions |
|---|---|---|
TimeToLiveDeletedItemCount | Items deleted by TTL expiration in the time period. | TableName |
Global Tables (Replication)
| Metric | Description | Dimensions |
|---|---|---|
ReplicationLatency | Time between an item appearing in one region’s stream and arriving in another region’s replica. | TableName, ReceivingRegion |
PendingReplicationCount | Item updates written to one replica but not yet replicated to another. Global Tables v2017 only. | TableName, ReceivingRegion |
Kinesis Data Streams
| Metric | Description | Dimensions |
|---|---|---|
AgeOfOldestUnreplicatedRecord | Age in milliseconds of the oldest record waiting for Kinesis replication. | TableName, DelegatedOperation |
FailedToReplicateRecordCount | Records DynamoDB failed to replicate to the Kinesis data stream. | TableName, DelegatedOperation |
ThrottledPutRecordCount | Records throttled by Kinesis due to insufficient stream capacity. | TableName, DelegatedOperation |
Recommended Alerts
| Signal | Condition | Severity |
|---|---|---|
| Read throttle events | ReadThrottleEvents > 0 | Warning |
| Write throttle events | WriteThrottleEvents > 0 | Warning |
| Hot partition — read | ReadKeyRangeThroughputThrottleEvents > 0 | Critical |
| Hot partition — write | WriteKeyRangeThroughputThrottleEvents > 0 | Critical |
| System errors | SystemErrors > 0 | Critical |
| Consumed read capacity ≥ 80% provisioned | ConsumedReadCapacityUnits / ProvisionedReadCapacityUnits > 0.8 | Warning |
| Consumed write capacity ≥ 80% provisioned | ConsumedWriteCapacityUnits / ProvisionedWriteCapacityUnits > 0.8 | Warning |
| Global Tables replication lag | ReplicationLatency > 60000 ms | Warning |
| Transaction conflicts | TransactionConflict > 0 anomaly | Warning |
Troubleshooting
Please get in touch with us on Discord or Email if you have any questions.