适用于 DynamoDB 的 CloudWatch Contributor Insights:工作原理 - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

适用于 DynamoDB 的 CloudWatch Contributor Insights:工作原理

Amazon DynamoDB 与 Amazon 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 还将创建特定于排序键的以下规则:

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

    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 返回有用的统计信息。此列表中的其他统计信息不返回有意义的值。

您可以使用 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 x 消耗的写入容量单位)+ 消耗的读取容量单位

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

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

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

如果表或全局二级索引具有排序键,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 缓存响应。它只显示对访问表或全局二级索引的响应。

静态加密

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

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

精细访问控制

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

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

访问控制

您可以通过限制 DynamoDB 控制平面权限和 CloudWatch 数据平面权限来使用 AWS Identity and Access Management (IAM) 控制 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 操作:GetItemPutItem 和放置 5 个项目的 BatchWriteItem

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

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

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

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

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

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

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