Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Amazon DynamoDB 指标和维度

当您与 DynamoDB 交互时,它向 CloudWatch 发送下列指标和维度。您可以按照以下步骤查看 Amazon DynamoDB 的各项指标。

查看指标 (控制台)

指标的分组首先依据服务命名空间,然后依据每个命名空间内的各种维度组合。

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,选择 Metrics

  3. 选择 DynamoDB 命名空间。

查看指标 (CLI)

  • 在命令提示符处,输入以下命令:

    Copy
    aws cloudwatch list-metrics --namespace "AWS/DynamoDB"

CloudWatch 会显示 Amazon DynamoDB 的以下指标:

Amazon DynamoDB 维度和指标

下面列出了 Amazon DynamoDB 发送到 Amazon CloudWatch 的指标和维度。

DynamoDB 指标

Amazon DynamoDB 中包含以下指标。请注意,仅当指标具有非零值时,DynamoDB 才会将指标发送到 CloudWatch。例如,当请求生成 HTTP 400 状态代码时,UserErrors 指标将会递增。如果在某个时段内未遇到 HTTP 400 错误,则 CloudWatch 在该时段内不会提供 UserErrors 的指标。

注意

Amazon CloudWatch 每隔一分钟聚合以下 DynamoDB 指标 1 次:

  • ConditionalCheckFailedRequests

  • ConsumedReadCapacityUnits

  • ConsumedWriteCapacityUnits

  • ReadThrottleEvents

  • ReturnedBytes

  • ReturnedItemCount

  • ReturnedRecordsCount

  • SuccessfulRequestLatency

  • SystemErrors

  • TimeToLiveDeletedItemCount

  • ThrottledRequests

  • UserErrors

  • WriteThrottleEvents

对于所有其他 DynamoDB 指标,聚合粒度为五分钟。

并非所有统计数据(例如,AverageSum)都适用于每个指标。不过,所有这些值可通过 Amazon DynamoDB 控制台获得,也可通过对所有指标使用 CloudWatch 控制台、 AWS CLI 或 AWS SDK 获得。在下表中,每一个指标都有一个适用于该指标的有效统计数据列表。

指标 说明
ConditionalCheckFailedRequests

执行条件写入的尝试失败的次数。通过 PutItemUpdateItemDeleteItem 操作,您可以提供一个要求必须计算为 true 才能继续操作的逻辑条件。如果该条件计算为 false,则 ConditionalCheckFailedRequests 会增加 1。

注意

如果条件写入失败,则会导致 HTTP 400 错误(错误请求)。这些事件会反映在 ConditionalCheckFailedRequests 指标中,但不会反映在 UserErrors 指标中。

单位:Count

维度: TableName

有效统计数据:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

ConsumedReadCapacityUnits

在指定时间段内使用的读取容量单位数,因此您可以跟踪预配置吞吐量使用了多少。您可以检索表及其所有全局二级索引或特定全局二级索引的总占用读取容量。有关更多信息,请参阅 Amazon DynamoDB 中预配置的吞吐量

注意

使用 Sum 统计数据计算已使用的吞吐量。例如,获取一分钟时间段的 Sum 值,并将该值除以一分钟的秒数 (60) 来计算每秒的平均 ConsumedReadCapacityUnits(确认此平均值不会突出这一分钟内出现的读取活动中的任何大而短暂的峰值)。您可以将计算出的值与您提供给 DynamoDB 的预配置吞吐量值进行比较。

单位:Count

维度: TableName, GlobalSecondaryIndexName

有效统计数据:

  • Minimum – 对表或索引的任何单个请求所使用的读取容量单位的最小数目。

  • Maximum – 对表或索引的任何单个请求所使用的读取容量单位的最大数目。

  • Average – 每个请求使用的平均读取容量。

  • Sum – 使用的读取容量单位总数。这是 ConsumedReadCapacityUnits 指标的最有用的统计数据。

  • SampleCount – 对 DynamoDB 的请求(使用读取容量)的数目。

ConsumedWriteCapacityUnits

在指定时间段内使用的写入容量单位数,因此您可以跟踪预配置吞吐量使用了多少。您可以检索表及其所有全局二级索引或特定全局二级索引的总占用写入容量。有关更多信息,请参阅 Amazon DynamoDB 中预配置的吞吐量

注意

使用 Sum 统计数据计算已使用的吞吐量。例如,获取一分钟时间段的 Sum 值,并将该值除以一分钟的秒数 (60) 来计算每秒的平均 ConsumedWriteCapacityUnits(确认此平均值不会突出这一分钟内出现的写入活动中的任何大而短暂的峰值)。您可以将计算出的值与您提供给 DynamoDB 的预配置吞吐量值进行比较。

单位:Count

维度: TableName, GlobalSecondaryIndexName

有效统计数据:

  • Minimum – 对表或索引的任何单个请求所使用的写入容量单位的最小数目。

  • Maximum – 对表或索引的任何单个请求所使用的写入容量单位的最大数目。

  • Average – 每个请求使用的平均写入容量。

  • Sum – 使用的写入容量单位总数。这是 ConsumedWriteCapacityUnits 指标的最有用的统计数据。

  • SampleCount – 对 DynamoDB 的请求(使用写入容量)的数目。

OnlineIndexConsumedWriteCapacity

将新的全局二级索引添加到表中时消耗的写入容量单位数。如果该索引的写入容量过低,则回填阶段的传入写入活动可能会被阻止;这会增加创建索引所用的时间。您应在创建索引时对此统计数据进行监控,以确定索引的写入容量是否预置不足。

您可以使用 UpdateTable 操作调整索引的写入容量,即使索引仍在创建过程中也是如此。

请注意,索引的 ConsumedWriteCapacityUnits 指标不包括在索引创建过程中消耗的写入吞吐容量。

单位:Count

维度: TableName, GlobalSecondaryIndexName

有效统计数据:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

OnlineIndexPercentageProgress

将新的全局二级索引添加到表中时的完成百分比。DynamoDB 必须先为新索引分配资源,然后将表中的属性回填到该索引中。对于大型表,完成此过程可能需要较长时间。在 DynamoDB 建立索引时,您应对此统计数据进行监控以了解相对进度。

单位:Count

维度: TableName, GlobalSecondaryIndexName

有效统计数据:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

OnlineIndexThrottleEvents

将新的全局二级索引添加到表中时发生的写入阻止事件数。这些事件表明,由于传入写入活动超过了索引的预置写入吞吐容量,因此索引创建将需要更长时间才能完成。

您可以使用 UpdateTable 操作调整索引的写入容量,即使索引仍在创建过程中也是如此。

请注意,索引的 WriteThrotttleEvents 指标不包含在索引创建过程中发生的任何阻止事件。

单位:Count

维度: TableName, GlobalSecondaryIndexName

有效统计数据:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

ProvisionedReadCapacityUnits

表或全局二级索引的预置的读取容量单位数。

TableName 维度会针对表(不针对任何全局二级索引)返回 ProvisionedReadCapacityUnits。要查看全局二级索引的 ProvisionedReadCapacityUnits,您必须指定 TableNameGlobalSecondaryIndex

单位:Count

维度: TableName, GlobalSecondaryIndexName

有效统计数据:

  • Minimum – 预置读取容量的最低设置。如果您使用 UpdateTable 增加读取容量,则此指标显示该时段内预置 ReadCapacityUnits 的最小值。

  • Maximum – 预置读取容量的最高设置。如果您使用 UpdateTable 减小读取容量,则此指标显示该时段内预置 ReadCapacityUnits 的最大值。

  • Average - 平均预置读取容量。ProvisionedReadCapacityUnits 指标每隔五分钟发布一次。因此,如果您快速调整预置读取容量单位,则该统计数据可能不会反映真正的平均值。

ProvisionedWriteCapacityUnits

表或全局二级索引的预配置的写入容量单位数

TableName 维度会针对表(不针对任何全局二级索引)返回 ProvisionedWriteCapacityUnits。要查看全局二级索引的 ProvisionedWriteCapacityUnits,您必须指定 TableNameGlobalSecondaryIndex

单位:Count

维度: TableName, GlobalSecondaryIndexName

有效统计数据:

  • Minimum – 预置写入容量的最低设置。如果您使用 UpdateTable 增加写入容量,则此指标显示该时段内预置 WriteCapacityUnits 的最小值。

  • Maximum – 预置写入容量的最高设置。如果您使用 UpdateTable 减小写入容量,则此指标显示该时段内预置 WriteCapacityUnits 的最大值。

  • Average - 平均预置写入容量。ProvisionedWriteCapacityUnits 指标每隔五分钟发布一次。因此,如果您快速调整预置写入容量单位,则该统计数据可能不会反映真正的平均值。

ReadThrottleEvents

对 DynamoDB 的请求,这些请求超出了表或全局二级索引的预置的读取容量单位数。

单个请求可能会导致多个事件。例如,读取 10 个项目的 BatchGetItem 会作为十个 GetItem 事件进行处理。对于每个事件,如果该事件被阻止,ReadThrottleEvents 会增加 1。除非ThrottledRequests全部十个BatchGetItem 事件都被阻止,否则整个 GetItem 指标不会增加。

TableName 维度会针对表(不针对任何全局二级索引)返回 ReadThrottleEvents。要查看全局二级索引的 ReadThrottleEvents,您必须指定 TableNameGlobalSecondaryIndex

单位:Count

维度: TableName, GlobalSecondaryIndexName

有效统计数据:

  • SampleCount

  • Sum

ReturnedBytes

GetRecords 操作 (Amazon DynamoDB Streams) 在指定时段内返回的字节数。

单位:Bytes

维度: Operation, StreamLabel, TableName

有效统计数据:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

ReturnedItemCount

QueryScan 操作在指定时段内返回的项目数。

请注意,返回的项目数并不一定与已计算的项目数相同。例如,假设您请求对一个具有 100 个项目的表执行 Scan,但指定一个 FilterExpression 来缩小结果的范围,以便仅返回 15 个项目。在此情况下,来自 Scan 的响应包含的返回项目的 ScanCount 为 100,Count 为 15。

单位:Count

维度: TableName, Operation

有效统计数据:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

ReturnedRecordsCount

GetRecords 操作 (Amazon DynamoDB Streams) 在指定时段内返回的流记录数量。

单位:Count

维度: Operation, StreamLabel, TableName

有效统计数据:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

SuccessfulRequestLatency

指定时段内成功发送给 DynamoDB 或 Amazon DynamoDB Streams 的请求。SuccessfulRequestLatency 可提供两种不同类型的信息:

  • 成功请求(MinimumMaximumSumAverage)的已用时间。

  • 成功请求的数目 (SampleCount)。

SuccessfulRequestLatency 仅反映 DynamoDB 或 Amazon DynamoDB Streams 中的活动,并且不考虑网络延迟或客户端活动。

单位:Milliseconds

维度: TableName, Operation

有效统计数据:

  • Minimum

  • Maximum

  • Average

  • SampleCount

SystemErrors

对 DynamoDB 或 Amazon DynamoDB Streams 的请求,这些请求在指定时段内生成 HTTP 500 状态代码。HTTP 500 通常指示内部服务错误。

单位:Count

维度:所有维度

有效统计数据:

  • Sum

  • SampleCount

TimeToLiveDeletedItemCount

在指定时段内通过有效时间 (TTL) 删除的项目数。此指标可帮助您监控表上的 TTL 删除速率。

单位:Count

维度:TableName

有效统计数据:

  • Sum

ThrottledRequests

对 DynamoDB 的请求,这些请求超出了资源的预置吞吐量限制(例如表或索引)。

如果请求中的任何活动超过预置的吞吐量上限,ThrottledRequests 会增加 1。例如,如果您在具有全局二级索引的表中更新项目,则会发生多个事件 – 对表的写入以及对每个索引的写入。如果这些事件中的一个或多个被阻止,ThrottledRequests 会增加 1。

注意

在批处理请求(BatchGetItemBatchWriteItem)中,ThrottledRequests 仅在批处理中的每个请求受到限制止时递增。

如果批处理中的任一请求被阻止,则以下某个指标将递增:

  • ReadThrottleEvents – 对于 BatchGetItem 中的受限制的 GetItem 事件。

  • WriteThrottleEvents – 对于 BatchWriteItem 中的受限制的 PutItemDeleteItem 事件。

要深入了解哪个事件在阻止请求,请将 ThrottledRequests 和表及其索引的 ReadThrottleEventsWriteThrottleEvents 进行对比。

注意

受限制的请求将生成 HTTP 400 状态代码。所有此类事件将反映在 ThrottledRequests 指标中,但不会反映在 UserErrors 指标中。

单位:Count

维度: TableName, Operation

有效统计数据:

  • Sum

  • SampleCount

UserErrors

对 DynamoDB 或 Amazon DynamoDB Streams 的请求,这些请求在指定时段内生成 HTTP 400 状态代码。HTTP 400 通常指示客户端错误,例如,参数组合无效、正在尝试更新不存在的表或请求签名错误。

除以下事件外,其余所有这类事件都会反映在 UserErrors 中:

  • ProvisionedThroughputExceededException - 参阅本节中的 ThrottledRequests 指标。

  • ConditionalCheckFailedException - 参阅本节中的 ConditionalCheckFailedRequests 指标。

UserErrors 表示对当前区域和当前 AWS 账户中 DynamoDB 或 Amazon DynamoDB Streams 请求的 HTTP 400 错误汇总。

单位:Count

有效统计数据:

  • Sum

  • SampleCount

WriteThrottleEvents

对 DynamoDB 的请求,这些请求超出了表或全局二级索引的预置的写入容量单位数。

单个请求可能会导致多个事件。例如,针对一个具有三个全局二级索引的表执行 PutItem 请求会导致四个事件发生 – 表的写入,以及三个索引中每个索引的写入。对于每个事件,如果该事件被阻止,WriteThrottleEvents 指标则会增加 1。对于单一 PutItem 请求,如果任一事件被阻止,则 ThrottledRequests 也会增加 1。对于 BatchWriteItem,除非所有单独的 PutItemDeleteItem 事件都受到限制,否则整个 BatchWriteItemThrottledRequests 指标不会增加。

TableName 维度会针对表(不针对任何全局二级索引)返回 WriteThrottleEvents。要查看全局二级索引的 WriteThrottleEvents,您必须指定 TableNameGlobalSecondaryIndex

单位:Count

维度: TableName, GlobalSecondaryIndexName

有效统计数据:

  • Sum

  • SampleCount

DynamoDB 指标的维度

适用于 DynamoDB 的指标由账户值、表名、全局二级索引名称或操作予以限定。您可以使用 CloudWatch 控制台按下表中的任意维度对 DynamoDB 数据进行检索。

维度 描述
GlobalSecondaryIndexName

该维度会将数据限定为表上的全局二级索引。如果您要指定 GlobalSecondaryIndexName,还必须指定 TableName

Operation

该维度会将数据限定为以下其中一项 DynamoDB 操作:

  • PutItem

  • DeleteItem

  • UpdateItem

  • GetItem

  • BatchGetItem

  • Scan

  • Query

  • BatchWriteItem

此外,您还可以将数据限定为以下 Amazon DynamoDB Streams 操作:

  • GetRecords

StreamLabel

该维度会将数据限定为特定流标签。它可与 Amazon DynamoDB Streams GetRecords 操作对应的指标结合使用。

TableName

该维度会将数据限定为特定表。该值可以是当前区域和当前 AWS 账户中的任意表名称。