Links#
- DynamoDB metrics and dimensions
- DynamoDB YACE dashboard JSON
- DynamoDB YACE environment dashboard JSON
1. YACE Config#
这些 metric 都是 AWS 官方 AWS/DynamoDB CloudWatch metrics。ThrottledRequests 也是真实存在的 metric,但它是 sparse / event-driven metric,通常只有发生 throttle 后才容易在 CloudWatch metrics / YACE 输出中看到。通用原则见 Monitoring Exporters.
如果你的 metrics 已经通过 relabel 统一成 environment label,可以使用 environment 版本 dashboard。它会增加 $environment 变量,并在所有 DynamoDB 查询里加上:
{environment=~"$environment", dimension_TableName=~"$table_name"}This dashboard assumes YACE exposes DynamoDB table name as dimension_TableName, for example:
environment="uat"
dimension_TableName="read_cursor_dynamo"apiVersion: v1alpha1
sts-region: ap-northeast-1
discovery:
jobs:
- type: AWS/DynamoDB
regions: [ap-northeast-1]
customTags:
- key: environment
value: uat
period: 300
length: 600
nilToZero: true
metrics:
- name: ThrottledRequests
statistics: [Sum]
- name: ReadThrottleEvents
statistics: [Sum]
- name: WriteThrottleEvents
statistics: [Sum]
- name: SuccessfulRequestLatency
statistics: [Average, p95, p99]
- name: SystemErrors
statistics: [Sum]
- name: UserErrors
statistics: [Sum]
- name: ConsumedReadCapacityUnits
statistics: [Sum]
- name: ConsumedWriteCapacityUnits
statistics: [Sum]
- name: ProvisionedReadCapacityUnits
statistics: [Average]
- name: ProvisionedWriteCapacityUnits
statistics: [Average]
- name: ConditionalCheckFailedRequests
statistics: [Sum]
- name: ReturnedItemCount
statistics: [Sum]2. Metric Check#
| Metric | AWS/DynamoDB Metric? | Recommended Statistic | When Datapoint Appears | Note |
|---|---|---|---|---|
ThrottledRequests |
yes | Sum | DynamoDB throttles a request | sparse metric; may be absent when no throttling happened |
ReadThrottleEvents |
yes | Sum | read operation is throttled | use with WriteThrottleEvents to split read/write pressure |
WriteThrottleEvents |
yes | Sum | write operation is throttled | use with ReadThrottleEvents to split read/write pressure |
SuccessfulRequestLatency |
yes | Average, p95, p99 | successful DynamoDB request completes | only successful requests are included |
SystemErrors |
yes | Sum | DynamoDB service-side error occurs | sparse metric; should normally be zero/absent |
UserErrors |
yes | Sum | client-side request error occurs | includes bad request patterns; inspect SDK/app errors |
ConsumedReadCapacityUnits |
yes | Sum | read request consumes RCU | appears when reads happen; Sum is per period |
ConsumedWriteCapacityUnits |
yes | Sum | write request consumes WCU | appears when writes happen; Sum is per period |
ProvisionedReadCapacityUnits |
yes | Average | table/index has provisioned read capacity | mainly useful for provisioned mode capacity ratio |
ProvisionedWriteCapacityUnits |
yes | Average | table/index has provisioned write capacity | mainly useful for provisioned mode capacity ratio |
ConditionalCheckFailedRequests |
yes | Sum | condition expression evaluates false | expected in optimistic-lock/idempotency flows; alert on abnormal spikes |
ReturnedItemCount |
yes | Sum | Query or Scan returns items | useful for query efficiency and large-result detection |
Why a real metric may not appear:
no datapoints:
CloudWatch / YACE may not show a metric until the event happened recently
wrong dimensions:
DynamoDB metrics may be table-level, operation-level, or index-level
check actual labels exposed by YACE before writing PromQL
discovery filter:
if YACE discovery does not find the table, no metric will be scraped
metric spelling:
ReturnedItemCount is valid
ReturnedItemCoun is invalidAWS CLI check:
aws cloudwatch list-metrics \
--namespace AWS/DynamoDB \
--metric-name ThrottledRequests \
--region ap-northeast-1If it returns empty, it does not prove the metric is invalid. It usually means no recent datapoint exists for the selected region/account/dimensions.
3. Dashboard Rows#
| Row | Panels |
|---|---|
| Overview | throttled requests, latency p95, system errors, consumed capacity |
| Drilldown | read/write throttle split, user errors, conditional failures |
| Capacity | consumed vs provisioned RCU/WCU |
| Debug | returned item count and operation-level latency |
4. Verify#
{__name__=~"aws_dynamodb_.*"}