View a markdown version of this page

使用亚马逊监控亚马逊 Kinesis 数据流服务 CloudWatch - Amazon Kinesis Data Streams

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用亚马逊监控亚马逊 Kinesis 数据流服务 CloudWatch

亚马逊 Kinesis 数据流和亚马逊 CloudWatch 已集成,因此您可以收集、查看和分析您的 Kinesis 数据流的 CloudWatch指标。例如,要跟踪分片使用情况,您可监控 IncomingBytes 和 OutgoingBytes 指标并将它们与流中分片数量进行比较。

您配置的直播指标和分片级别指标会自动收集并推送到 CloudWatch 每分钟一次。指标会存档两周。两周后,数据会被丢弃。

下表介绍了适用于 Kinesis Data Streams 的基本型流级别监控和增强型分片级别监控。

Type 说明

基本 (流级)

Stream-level 数据每分钟自动发送一次,不收费。

增强(分片级)

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

有关定价的信息,请参阅亚马逊 CloudWatch 产品页面。

Amazon Kinesis Data Streams 维度和指标

Kinesis 数据流将指标发送到两个 CloudWatch 级别:流级别和分片级别(可选)。 Stream-level 指标适用于正常条件下最常见的监控用例。 Shard-level 指标用于特定的监控任务,通常与故障排除有关,可通过EnableEnhancedMonitoring操作启用。

有关从 CloudWatch 指标收集的统计数据的解释,请参阅亚马逊 CloudWatch 用户指南中的CloudWatch 统计数据。

基本的流级指标

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

Kinesis 数据流将这些流级指标发送到 CloudWatch 每分钟一次。这些指标始终可用。

指标 说明
GetRecords.Bytes

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

Shard-level 指标名称:OutgoingBytes

尺寸: StreamName

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

单位:字节

GetRecords.IteratorAge

不再使用此指标。使用 GetRecords.IteratorAgeMilliseconds。

GetRecords.IteratorAgeMilliseconds

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

Shard-level 指标名称:IteratorAgeMilliseconds

尺寸: StreamName

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

单位:毫秒

GetRecords.Latency

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

尺寸: StreamName

统计数据:Minimum、Maximum、Average

单位:毫秒

GetRecords.Records

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

Shard-level 指标名称:OutgoingRecords

尺寸: StreamName

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

单位:计数

GetRecords.Success

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

尺寸: StreamName

统计数据:Average、Sum、Samples

单位:计数

IncomingBytes

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

Shard-level 指标名称:IncomingBytes

尺寸: StreamName

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

单位:字节

IncomingRecords

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

Shard-level 指标名称: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

此指标已弃用。使用 PutRecords.SuccessfulRecords。

尺寸: StreamName

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

单位:计数

PutRecords.Success

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

尺寸: StreamName

统计数据:Average、Sum、Samples

单位:计数

PutRecords.TotalRecords

在指定时段内测量的,每个 Kinesis 数据流的 PutRecords 操作中发送的记录总数。

尺寸: StreamName

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

单位:计数

PutRecords.SuccessfulRecords

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

尺寸: StreamName

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

单位:计数

PutRecords.FailedRecords

在指定时段内测量的,每个 Kinesis 数据流的 PutRecords 操作中因内部故障而遭拒的记录数。偶尔会出现内部故障,遇到之时请重试。

尺寸: StreamName

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

单位:计数

PutRecords.ThrottledRecords

在指定时段内测量的,每个 Kinesis 数据流的 PutRecords 操作中因节流而遭拒的记录数。

尺寸: StreamName

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

单位:计数

ReadProvisionedThroughputExceeded

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

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

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

Shard-level 指标名称:ReadProvisionedThroughputExceeded

尺寸: StreamName

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

单位:计数

SubscribeToShard.RateExceeded

当新订阅尝试失败时,将发出此指标,因为同一消费端已有活动订阅,或者超过了此操作允许的每秒调用数,也将发出此指标。

尺寸: StreamName, ConsumerName
SubscribeToShard.Success

此指标记录 SubscribeToShard订阅是否成功建立。订阅最多只能有效 5 分钟。因此,该指标至少每 5 分钟发送一次。

尺寸: StreamName, ConsumerName

SubscribeToShardEvent.Bytes

在指定时段内测量的从分片中接收的字节数。统计数据 Minimum、Maximum 和 Average 表示指定时段内单个事件中的已发布字节数。

Shard-level 指标名称:OutgoingBytes

尺寸: StreamName, ConsumerName

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

单位:字节

SubscribeToShardEvent.MillisBehindLatest

读取记录距离流开头的毫秒数,表示消费端落后当前时间有多远。

尺寸: StreamName, ConsumerName

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

单位:毫秒

SubscribeToShardEvent.Records

在指定时段内测量的从分片中接收的记录数。统计数据 Minimum、Maximum 和 Average 表示指定时段内单个事件中的记录数。

Shard-level 指标名称:OutgoingRecords

尺寸: StreamName, ConsumerName

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

单位:计数

SubscribeToShardEvent.Success 每次成功发布事件时都会发出此指标。只有在有活动订阅时,才会发出它。

尺寸: StreamName, ConsumerName

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

单位:计数

WriteProvisionedThroughputExceeded

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

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

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

Shard-level 指标名称:WriteProvisionedThroughputExceeded

尺寸: StreamName

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

单位:计数

增强的分片级指标

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

Kinesis 每分钟向发送以下分片级别指标。 CloudWatch 每个指标维度创建 1 个 CloudWatch 指标,每月进行大约 43,200 次 PutMetricData API 调用。默认情况下,这些指标未启用。系统会对 Kinesis 发出的增强型指标收费。有关更多信息,请参阅亚马逊 CloudWatch自定义指标标题下的亚马逊 CloudWatch 定价。按每个月每个指标每个分片收费。

指标 说明
IncomingBytes

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

Stream-level 指标名称:IncomingBytes

尺寸: StreamName, ShardId

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

单位:字节

IncomingRecords

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

Stream-level 指标名称:IncomingRecords

尺寸: StreamName, ShardId

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

单位:计数

IteratorAgeMilliseconds

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

Stream-level 指标名称:GetRecords.IteratorAgeMilliseconds

尺寸: StreamName, ShardId

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

单位:毫秒

OutgoingBytes

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

Stream-level 指标名称:GetRecords.Bytes

尺寸: StreamName, ShardId

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

单位:字节

OutgoingRecords

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

Stream-level 指标名称:GetRecords.Records

尺寸: StreamName, ShardId

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

单位:计数

ReadProvisionedThroughputExceeded

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

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

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

Stream-level 指标名称:ReadProvisionedThroughputExceeded

尺寸: StreamName, ShardId

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

单位:计数

WriteProvisionedThroughputExceeded

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

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

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

Stream-level 指标名称:WriteProvisionedThroughputExceeded

尺寸: StreamName, ShardId

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

单位:计数

Amazon Kinesis Data Streams 指标的维度

维度

说明

StreamName

Kinesis 流的名称。所有可用统计数据按 StreamName 进行筛选。

推荐的 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 类型。如果使用的是 Amazon Kinesis Producer Library(KPL),请使用 PutRecords.Success。
GetRecords.Success 我们建议使用平均统计数据 CloudWatch 警报来指示直播中的记录何时失效。

访问 Kinesis 数据流的亚马逊 CloudWatch 指标

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

使用 CloudWatch 控制台访问指标
  1. 在处打开 CloudWatch 控制台https://console.aws.amazon.com/cloudwatch/。

  2. 在导航栏中,选择一个区域。

  3. 在导航窗格中,选择指标。

  4. 在 “按类别划分的CloudWatch 指标” 窗格中,选择 Kinesis 指标。

  5. 单击相关行查看指定MetricName和的统计信息StreamName。

    注意:除读取吞吐量和写入吞吐 CloudWatch 量外,大多数控制台统计数据名称都与之前列出的相应指标名称相匹配。这些统计数据以 5 分钟为间隔计算得出:写入吞吐量监控IncomingBytes CloudWatch 指标,读取吞吐量监控指标GetRecords.Bytes。

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

要访问指标,请使用 AWS CLI

使用 list-metrics 和 get-metric-statistics 命令。

使用 CloudWatch CLI 访问指标

使用 mon-list-metrics 和 mon-get-stats 命令。

使用 CloudWatch API 访问指标

使用 ListMetrics 和 GetMetricStatistics 操作。