Amazon Kinesis Data Streams
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

利用 Amazon CloudWatch 监控 Amazon Kinesis Data Streams 服务

通过将 Amazon Kinesis Data Streams 和 Amazon CloudWatch 集成,您可以收集、查看和分析您的 Kinesis data stream 的 CloudWatch 指标。例如,要跟踪分片使用情况,您可监控 PutRecords.BytesGetRecords.Bytes 指标并将它们与流中分片数进行比较。

您为流配置的指标将每分钟自动收集一次并推送给 CloudWatch。指标会存档两周。两周后,数据会被丢弃。

下表介绍了针对 Kinesis 流的基本流级监控和增强的分片级监控。

类型 描述

基本 (流级)

每分钟自动发送流级数据是免费的。

增强(分片级)

每分钟发送分片级数据需要额外付费。要获得此级别的数据,您必须使用 EnableEnhancedMonitoring 操作专门针对该流启用它。

有关定价的信息,请参阅 Amazon CloudWatch 产品页

Amazon Kinesis Data Streams 维度与指标

Kinesis Data Streams 在两个级别向 CloudWatch 发送指标;流级别和 (可选) 分片级别。流级别指标适用于一般条件下的最常见的监控使用案例。分片级指标用于特定的监控任务,通常与问题排查相关,通过 EnableEnhancedMonitoring 操作启用。

有关从 CloudWatch 指标收集统计数据的说明,请参阅 Amazon CloudWatch 用户指南 中的 CloudWatch 统计数据

基本的流级指标

AWS/Kinesis 命名空间包括以下流级指标。

Kinesis Data Streams 每分钟都会向 CloudWatch 发送一次这些流级别指标。这些指标始终可用。

指标 描述
GetRecords.Bytes

在指定时段内从 Kinesis 流检索的字节数。统计数据 Minimum、Maximum 和 Average 表示指定时段内流的单个 GetRecords 操作中的字节数。

分片级别指标名称:OutgoingBytes

维度:StreamName

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:字节

GetRecords.IteratorAge

此指标已弃用。使用 GetRecords.IteratorAgeMilliseconds

GetRecords.IteratorAgeMilliseconds

对某个 Kinesis 流进行的所有 GetRecords 调用中最后一条记录的存在时间,是在指定的时间段测量的。存在时间是当前时间与最后一条 GetRecords 调用记录写入流的时间之差。Minimum 和 Maximum 统计数据可用于跟踪 Kinesis 使用者应用程序的进度。值为“零”表示正在读取的记录已完全与流匹配。

分片级别指标名称:IteratorAgeMilliseconds

维度:StreamName

统计数据:Minimum、Maximum、Average、Samples

单位:毫秒

GetRecords.Latency

在指定时段内测量的每个 GetRecords 操作所用的时间。

维度:StreamName

统计数据:Minimum、Maximum、Average

单位:毫秒

GetRecords.Records

在指定时段内测量的从分片中检索的记录数。统计数据 Minimum、Maximum 和 Average 表示指定时段内流的单个 GetRecords 操作中的记录数。

分片级别指标名称:OutgoingRecords

维度:StreamName

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:计数

GetRecords.Success

在指定时段内测量的每个流中的成功 GetRecords 操作数。

维度:StreamName

统计数据:Average、Sum、Samples

单位:计数

IncomingBytes

在指定时段内成功放置到 Kinesis 流的字节数。该指标包含来自 PutRecordPutRecords 的字节数。统计数据 Minimum、Maximum 和 Average 表示指定时段内流的单个 put 操作中的字节数。

分片级别指标名称:IncomingBytes

维度:StreamName

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:字节

IncomingRecords

在指定时段内成功放置到 Kinesis 流的记录数。该指标包含来自 PutRecordPutRecords 的记录数。统计数据 Minimum、Maximum 和 Average 表示指定时段内流的单个 put 操作中的记录数。

分片级别指标名称:IncomingRecords

维度:StreamName

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:计数

PutRecord.Bytes

在指定时段内使用 PutRecord 放置到 Kinesis 流的字节数。

维度:StreamName

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:字节

PutRecord.Latency

在指定时段内测量的每个 PutRecord 操作所用的时间。

维度:StreamName

统计数据:Minimum、Maximum、Average

单位:毫秒

PutRecord.Success

在指定时段内每个 Kinesis 流中的成功PutRecord操作数。平均值反映了对流的成功写入的百分比。

维度:StreamName

统计数据:Average、Sum、Samples

单位:计数

PutRecords.Bytes

在指定时段内使用 PutRecords 放置到 Kinesis 流的字节数。

维度:StreamName

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:字节

PutRecords.Latency

在指定时段内测量的每个 PutRecords 操作所用的时间。

维度:StreamName

统计数据:Minimum、Maximum、Average

单位:毫秒

PutRecords.Records

在指定时段内测量的每个 Kinesis 流的 PutRecords 操作中的成功记录数。

维度:StreamName

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:计数

PutRecords.Success

在指定时间段内测得的每个 Kinesis 流中至少有一个记录成功的 PutRecords 操作的数量。

维度:StreamName

统计数据:Average、Sum、Samples

单位:计数

ReadProvisionedThroughputExceeded

在指定时段内针对流的受限的 GetRecords 调用数。此指标的最常用的统计数据为 Average。

当统计数据 Minimum 的值为 1 时,流的所有记录在指定时段内将受限。

当统计数据 Maximum 的值为 0(零)时,流的任何记录在指定时段内将不受限。

分片级别指标名称:ReadProvisionedThroughputExceeded

维度:StreamName

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:计数

WriteProvisionedThroughputExceeded

在指定时段内因流限制而被拒绝的记录数。该指标包含来自 PutRecordPutRecords 操作的限制。此指标的最常用的统计数据为 Average。

当统计数据 Minimum 的值不为零时,流的记录在指定时段内将受限。

当统计数据 Maximum 的值为 0(零)时,流的任何记录在指定时段内将不受限。

分片级别指标名称:WriteProvisionedThroughputExceeded

维度:StreamName

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:计数

增强的分片级指标

AWS/Kinesis 命名空间包括以下分片级指标。

Kinesis 每分钟向 CloudWatch 发送以下分片级别指标一次。默认情况下,这些指标未启用。对于 Kinesis 发出的增强指标,存在费用。有关更多信息,请参阅标题 Amazon CloudWatch 自定义指标下面的 Amazon CloudWatch 定价。按每个月每个指标每个给定收费。

指标 描述
IncomingBytes

在指定时段内成功放置到分片的字节数。该指标包含来自 PutRecordPutRecords 的字节数。统计数据 Minimum、Maximum 和 Average 表示指定时段内分片的单个 put 操作中的字节数。

流级别指标名称:IncomingBytes

维度:StreamName、ShardId

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:字节

IncomingRecords

在指定时段内成功放置到分片的记录数。该指标包含来自 PutRecordPutRecords 的记录数。统计数据 Minimum、Maximum 和 Average 表示指定时段内分片的单个 put 操作中的记录数。

流级别指标名称:IncomingRecords

维度:StreamName、ShardId

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:计数

IteratorAgeMilliseconds

对某个分片进行的所有 GetRecords 调用中最后一条记录的存在时间,是在指定的时间段测量的。存在时间是当前时间与最后一条 GetRecords 调用记录写入流的时间之差。Minimum 和 Maximum 统计数据可用于跟踪 Kinesis 使用者应用程序的进度。值为 0(零)表示正在读取的记录已完全与流匹配。

流级别指标名称:GetRecords.IteratorAgeMilliseconds

维度:StreamName、ShardId

统计数据:Minimum、Maximum、Average、Samples

单位:毫秒

OutgoingBytes

在指定时段内测量的从分片中检索的字节数。统计数据 Minimum、Maximum 和 Average 表示指定时段内分片的单个 GetRecords 操作中的字节数。

流级别指标名称:GetRecords.Bytes

维度:StreamName、ShardId

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:字节

OutgoingRecords

在指定时段内测量的从分片中检索的记录数。统计数据 Minimum、Maximum 和 Average 表示指定时段内分片的单个 GetRecords 操作中的记录数。

流级别指标名称:GetRecords.Records

维度:StreamName、ShardId

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:计数

ReadProvisionedThroughputExceeded

在指定时段内针对分片的受限的 GetRecords 调用数。此异常计数涵盖了以下限制的所有维度:每秒读取每个分片 5 次或每分片每秒 2 MB。此指标的最常用的统计数据为 Average。

当统计数据 Minimum 的值为 1 时,分片的所有记录在指定时段内将受限。

当统计数据 Maximum 的值为 0(零)时,分片的任何记录在指定时段内将不受限。

流级别指标名称:ReadProvisionedThroughputExceeded

维度:StreamName、ShardId

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:计数

WriteProvisionedThroughputExceeded

在指定时段内因分片限制而被拒绝的记录数。此指标包括来自 PutRecordPutRecords 操作的限制,并涵盖以下限制的所有维度:每分片每秒 1,000 条记录或每分片每秒 1 MB。此指标的最常用的统计数据为 Average。

当统计数据 Minimum 的值不为零时,分片的记录在指定时段内将受限。

当统计数据 Maximum 的值为 0(零)时,分片的任何记录在指定时段内将不受限。

流级别指标名称:WriteProvisionedThroughputExceeded

维度:StreamName、ShardId

统计数据:Minimum、Maximum、Average、Sum、Samples

单位:计数

Amazon Kinesis Data Streams 指标的维度

您可以使用以下维度筛选 Amazon Kinesis Data Streams 的指标。

维度 描述

StreamName

Kinesis 流的名称。

ShardId

Kinesis 流 中的分片 ID。

推荐的 Amazon Kinesis Data Streams 指标

大多数 Kinesis Data Streams 客户都对几个 Amazon Kinesis Data Streams 指标特别感兴趣。以下列表提供了推荐的指标及其用法。

指标 使用说明

GetRecords.IteratorAgeMilliseconds

跟踪流中所有分片和使用者的读取位置。请注意,如果某个迭代器的寿命超过了保留期的 50%(默认值为 24 小时,可配置为最高 7 天),则存在由于记录过期造成数据丢失的风险。我们建议针对最大值统计数据使用 CloudWatch 警报,以便在此问题构成风险之前提醒您。要了解使用此指标的示例情景,请参阅使用者记录处理滞后

ReadProvisionedThroughputExceeded

当您的使用者端记录处理滞后时,有时难以确定瓶颈的位置。使用此指标可确定读取操作是否由于超出了读取吞吐量上限而受到限制。此指标的最常用的统计数据为 Average。

WriteProvisionedThroughputExceeded 这与 ReadProvisionedThroughputExceeded 指标的用途相同,但是此指标用于流的创建器 (put) 端。此指标的最常用的统计数据为 Average。
PutRecord.Success,PutRecords.Success 我们建议针对平均值统计数据使用 CloudWatch 警报,以指示记录是否未能放入流中。根据创建器所使用的对象选择一种或两种 put 类型。如果使用的是 Kinesis Producer Library (KPL),请使用 PutRecords.Success
GetRecords.Success 我们建议针对平均值统计数据使用 CloudWatch 警报,以指示是否未能从流中读取记录。

访问 Kinesis Data Streams 的 Amazon CloudWatch 指标

您可使用 CloudWatch 控制台、命令行或 CloudWatch API 监控 Kinesis Data Streams 的指标。以下过程介绍如何使用这些不同的方式访问指标。

使用 CloudWatch 控制台访问指标

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

  2. 从导航栏中选择区域。

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

  4. CloudWatch Metrics by Category 窗格中,选择 Kinesis Metrics

  5. 单击相关行可查看指定的 MetricNameStreamName 的统计数据。

    注意:大部分控制台统计数据名称与上面列出的对应 CloudWatch 指标名称匹配,不过 Read ThroughputWrite Throughput 例外。这些统计数据按照 5 分钟的时间间隔计算:Write Throughput 监控 IncomingBytes CloudWatch 指标,Read Throughput 监控 GetRecords.Bytes

  6. (可选) 在图形窗格中,选择一个统计数据和时间段,然后使用这些设置创建 CloudWatch 警报。

使用 AWS CLI 访问指标

使用 list-metricsget-metric-statistics 命令。

使用 CloudWatch CLI 访问指标

使用 mon-list-metricsmon-get-stats 命令。

使用 CloudWatch API 访问指标

使用 ListMetricsGetMetricStatistics 操作。