CloudWatch Contributor Insights for DynamoDB:工作原理 - Amazon DynamoDB

CloudWatch Contributor Insights for DynamoDB:工作原理

Amazon DynamoDB 与 CloudWatch Contributor Insights 集成,来提供表或全局二级索引中访问次数最多和最常受限制的项目的相关信息。DynamoDB 通过 CloudWatch Contributor Insights 规则报告报告数据的图表提供这些信息。

有关 CloudWatch Contributor Insights 的更多信息,请参阅《Amazon CloudWatch 用户指南》中的使用 Contributor Insights 分析高基数数据

以下各节介绍 CloudWatch Contributor Insights for DynamoDB 的核心概念和行为。

CloudWatch Contributor Insights for DynamoDB 规则

在表或全局二级索引上启用 CloudWatch Contributor Insights for DynamoDB 后,DynamoDB 代表您创建以下规则

  • 最常访问的项目(分区键) — 标识表或全局二级索引中最常访问的项目的分区键。

    CloudWatch 规则名称格式:DynamoDBContributorInsights-PKC-[resource_name]-[creationtimestamp]

  • 最受限制的项目(分区键) — 标识表或全局二级索引中最受限制的项目的分区键。

    CloudWatch 规则名称格式:DynamoDBContributorInsights-PKT-[resource_name]-[creationtimestamp]

注意

如果您在 DynamoDB 表上启用 Contributor Insights,则仍然受 Contributor Insights 规则的限制。有关更多信息,请参阅 CloudWatch 服务配额

如果表或全局二级索引具有排序键,DynamoDB 还将创建特定于排序键的以下规则:

  • 最常访问的键(分区键和排序键) — 标识表或全局二级索引中最常访问的项目的分区键和排序键。

    CloudWatch 规则名称格式:DynamoDBContributorInsights-SKC-[resource_name]-[creationtimestamp]

  • 最受限制的键(分区键和排序键) — 标识表或全局二级索引中最受限制的项目的分区键和排序键。

    CloudWatch 规则名称格式:DynamoDBContributorInsights-SKT-[resource_name]-[creationtimestamp]

注意
  • 无法使用 CloudWatch 控制台或 API 直接修改或删除通过 CloudWatch Contributor Insights for DynamoDB 创建的规则。在表或全局二级索引上禁用 CloudWatch Contributor Insights for DynamoDB 会自动删除为该表或全局二级索引创建的规则。

  • 如果将 GetInsightRuleReport 操作与 DynamoDB 创建的 CloudWatch Contributor Insights 规则一起使用,则只有 MaxContributorValueMaximum 返回有用的统计信息。此列表中的其他统计信息不返回有意义的值。

  • 适用于 DynamoDB 的 CloudWatch Contributor Insights 有 25 个贡献者的限制。请求超过 25 个贡献者将返回错误。

可以使用 CloudWatch Contributor Insights for DynamoDB 规则创建 CloudWatch 告警。如果任何项目超过或达到特定的 ConsumedThroughputUnitsThrottleCount 阈值,您将收到通知。有关更多信息,请参阅为 Contributor Insights 指标数据设置告警

了解 CloudWatch Contributor Insights for DynamoDB 图表

CloudWatch Contributor Insights for DynamoDB 在 DynamoDB 和 CloudWatch 控制台显示两种图表:最常访问的项目最受限制的项目

最常访问的项目

使用此图可以确定表或全局二级索引中最常访问的项目。此图的 y 轴显示 ConsumedThroughputUnits,x 轴显示时间。前 N 个键中的每个键都以自己的颜色显示,图例显示在 X 轴下方。

DynamoDB 通过使用 ConsumedThroughputUnits 测量键访问频率,可以测量读写组合流量。ConsumedThroughputUnits 定义如下:

  • 预置 —(3 倍占用的写入容量单位)+ 占用的读取容量单位

  • 按需 —(3 倍写入请求单位)+ 读取请求单位

在 DynamoDB 控制台中,图中的每个数据点代表一分钟内的最大 ConsumedThroughputUnits。例如,图形值 180000 ConsumedThroughputUnits 表示:在一分钟的时间段内(3000 x 60 秒)持续访问项目,60 秒内每个项目的最大吞吐为 1000 个写入请求单位或 3000 个读取请求单位。换句话说,图表值表示每个一分钟周期内的最高流量分钟。可以在 CloudWatch 控制台中更改 ConsumedThroughputUnits 指标的时间粒度(例如,查看 5 分钟指标而不是 1 分钟)。

如果看到几条紧密聚集的线条而没有明显的离群值,则表明在给定的时间范围内,各个项目的工作负载相对平衡。如果在图中看到孤立的点,而不是连接的线条,则表明短时间内频繁访问项目。

如果表或全局二级索引具有排序键,DynamoDB 将创建两个图表:一个用于访问最多的分区键,另一个用于访问最多的分区键 + 排序键对。可以在仅分区键图表中查看分区键级别的流量。可以在分区 + 排序键图表中查看项目级别的流量。

最受节流的项目

使用此图可以确定表或全局二级索引中最受限制的项目。此图的 y 轴显示 ThrottleCount,x 轴显示时间。前 N 个键中的每个键都以自己的颜色显示,图例显示在 X 轴下方。

DynamoDB 使用 ThrottleCount(这是 ProvisionedThroughputExceededExceptionThrottlingExceptionRequestLimitExceeded 错误的计数)测量限制频率。

不测量全局二级索引的写入容量不足导致的写入限制。可以使用全局二级索引的最常访问的项目图表,识别导致写入限制的不平衡访问模式。有关更多信息,请参阅全局二级索引的预调配吞吐量注意事项

在 DynamoDB 控制台中,图中的每个数据点代表一分钟内的限制事件计数。

如果在此图中看不到任何数据,说明请求没有受到限制。如果在图表中看到孤立的点,而不是连接的线条,说明短时间内频繁限制项目。

如果表或全局二级索引具有排序键,则 DynamoDB 将创建两个图表:一个用于限制最多的分区键,另一个用于限制最多的分区键 + 排序键对。可以在仅分区键图表中看到分区键级别的限制计数,在分区键 + 排序键图表中看到项目级别的限制计数。

报告示例

以下是为同时具有分区键和排序键的表生成的报告示例。

4 个不同的 Contributor Insights 报告,显示最常访问的项目和最受限制的项目。

与其他 DynamoDB 功能的交互

以下章节介绍 CloudWatch Contributor Insights for DynamoDB 的行为方式,以及如何与 DynamoDB 中的一些其他功能进行交互。

全局表

CloudWatch Contributor Insights for DynamoDB 将全局表副本作为不同表进行监控。一个 AWS 区域中副本的 Contributor Insights 图表可能不会显示与另一个区域相同的模式。这是因为写数据在全局表的所有副本之间复制,但每个副本都可以提供区域绑定的读取流量。

DynamoDB Accelerator (DAX)

CloudWatch Contributor Insights for DynamoDB 不显示 DAX 缓存响应,只显示对访问表或全局二级索引的响应。

注意

DynamoDB CCI 不支持 PartiQL 请求。

静态加密

CloudWatch Contributor Insights for DynamoDB 不影响 DynamoDB 中的加密工作方式。CloudWatch 中发布的主键数据使用 AWS 拥有的密钥 加密。但是,DynamoDB 还支持 AWS 托管式密钥 和客户托管密钥。

CloudWatch Contributor Insights for DynamoDB 图表以明文形式显示经常访问项目和经常受限制项目的分区键和排序键(如适用)。如果你需要使用 AWS 密钥管理服务 (KMS) ,通过 AWS 托管式密钥 或客户托管密钥加密此表的分区键和排序键数据,则不应为此表启用 CloudWatch Contributor Insights for DynamoDB。

如果需要使用 AWS 托管式密钥 或客户托管密钥对主键数据进行加密,则不应为该表启用 CloudWatch Contributor Insights for DynamoDB。

精细访问控制

对于具有精细访问控制 (FGAC) 的表,CloudWatch Contributor Insights for DynamoDB 的功能没有什么不同。换句话说,任何具有相应 CloudWatch 权限的用户都可以在 CloudWatch Contributor Insights 图中查看受 FGAC 保护的主键。

如果表的主键包含不想发布到 CloudWatch 的受 FGAC 保护的数据,则不应为该表启用 CloudWatch Contributor Insights for DynamoDB。

访问控制

可以使用 AWS Identity and Access Management (IAM) 限制 DynamoDB 控制层面权限和 CloudWatch 数据层面权限,控制对 CloudWatch Contributor Insights for DynamoDB 的访问。有关更多信息,请参见将 IAM 与 CloudWatch Contributor Insights for DynamoDB 一起使用

CloudWatch Contributor Insights for DynamoDB 计费

CloudWatch Contributor Insights for DynamoDB 费用显示在每月账单的 CloudWatch 部分。这些费用根据处理的 DynamoDB 事件数计算。对于启用了 CloudWatch Contributor Insights for DynamoDB 的表和全局二级索引,通过数据层面操作写入或读取的每个项目都代表一个事件。

如果表或全局二级索引包含排序键,则读取或写入的每个项目代表两个事件。这是因为 DynamoDB 从不同时间序列识别最大的贡献因素:一个仅用于分区键,另一个用于分区和排序键对。

例如,假设应用程序执行以下 DynamoDB 操作:放入 5 个项目的 GetItemPutItemBatchWriteItem

  • 如果表或全局二级索引只有一个分区键,则将导致 7 个事件(对于 GetItem 为 1 个事件,对于 PutItem 为 1 个事件,对于 BatchWriteItem 为 5 个事件)。

  • 如果表或全局二级索引有一个分区和一个排序键,则将导致 14 个事件(对于 GetItem 为 2 个事件,对于 PutItem 为 2 个事件,对于 BatchWriteItem 为 10 个事件)。

  • 无论返回的项目数量多少,Query 操作始终导致 1 个事件。

与其他 DynamoDB 功能不同,CloudWatch Contributor Insights for DynamoDB 计费不会因以下因素而有所不同:

  • 容量模式(预置与按需)

  • 执行读取请求还是写入请求

  • 读取或写入的项目大小 (KB)