

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

# 使用亚马逊监控亚马逊 Kinesis Data Streams 服务 CloudWatch
<a name="monitoring-with-cloudwatch"></a>

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

系统会自动收集您配置的流指标和分片级指标，并将其推送到 CloudWatch 每分钟。指标会存档两周。两周后，数据会被丢弃。

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


| Type | 说明 | 
| --- | --- | 
|  基本 (流级)  |  每分钟自动发送流级数据是免费的。  | 
|  增强（分片级）  |  每分钟发送分片级数据需要额外付费。要获得此级别的数据，您必须使用 [EnableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_EnableEnhancedMonitoring.html) 操作专门针对该流启用它。 有关定价的信息，请参阅 [Amazon CloudWatch 产品页面](https://aws.amazon.com/cloudwatch)。  | 

## Amazon Kinesis Data Streams 维度和指标
<a name="kinesis-metrics"></a>

Kinesis Data Streams 将指标发送 CloudWatch 到两个级别：流级别和分片级别（可选）。流级别指标适用于一般条件下的最常见的监控使用案例。分片级指标用于特定的监控任务，通常与问题排查相关，通过 [EnableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_EnableEnhancedMonitoring.html) 操作启用。

有关从 CloudWatch 指标收集的统计数据的说明，请参阅 *Amazon CloudWatch 用户指南*中的[CloudWatch 统计数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#Statistic)。

**Topics**
+ [基本的流级指标](#kinesis-metrics-stream)
+ [增强的分片级指标](#kinesis-metrics-shard)
+ [Amazon Kinesis Data Streams 指标的维度](#kinesis-metricdimensions)
+ [推荐的 Amazon Kinesis Data Streams 指标](#kinesis-metric-use)

### 基本的流级指标
<a name="kinesis-metrics-stream"></a>

`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 流的字节数。该指标包含来自 `PutRecord` 和 `PutRecords` 的字节数。统计数据 Minimum、Maximum 和 Average 表示指定时段内流的单个 put 操作中的字节数。 分片级别指标名称：`IncomingBytes` 尺寸： StreamName 统计数据：Minimum、Maximum、Average、Sum、Samples 单位：字节  | 
| IncomingRecords |  在指定时段内成功放入 Kinesis 流的记录数。该指标包含来自 `PutRecord` 和 `PutRecords` 的记录数。统计数据 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 |  此指标已弃用。使用 `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（零）时，流的任何记录在指定时段内将不受限。 分片级别指标名称：`ReadProvisionedThroughputExceeded` 尺寸： StreamName 统计数据：Minimum、Maximum、Average、Sum、Samples 单位：计数  | 
| SubscribeToShard.RateExceeded | 当新订阅尝试失败时，将发出此指标，因为同一消费端已有活动订阅，或者超过了此操作允许的每秒调用数，也将发出此指标。尺寸： StreamName， ConsumerName | 
| SubscribeToShard.Success |  该指标记录 SubscribeToShard订阅是否成功建立。订阅最多只能有效 5 分钟。因此，该指标至少每 5 分钟发送一次。 尺寸： StreamName， ConsumerName  | 
| SubscribeToShardEvent.Bytes |  在指定时段内测量的从分片中接收的字节数。统计数据 Minimum、Maximum 和 Average 表示指定时段内单个事件中的已发布字节数。 分片级别指标名称：`OutgoingBytes` 尺寸： StreamName， ConsumerName 统计数据：Minimum、Maximum、Average、Sum、Samples 单位：字节  | 
| SubscribeToShardEvent.MillisBehindLatest |  读取记录距离流开头的毫秒数，表示消费端落后当前时间有多远。 尺寸： StreamName， ConsumerName 统计数据：Minimum、Maximum、Average、Samples 单位：毫秒  | 
| SubscribeToShardEvent.Records |  在指定时段内测量的从分片中接收的记录数。统计数据 Minimum、Maximum 和 Average 表示指定时段内单个事件中的记录数。 分片级别指标名称：`OutgoingRecords` 尺寸： StreamName， ConsumerName 统计数据：Minimum、Maximum、Average、Sum、Samples 单位：计数  | 
| SubscribeToShardEvent.Success | 每次成功发布事件时都会发出此指标。只有在有活动订阅时，才会发出它。尺寸： StreamName， ConsumerName统计数据：Minimum、Maximum、Average、Sum、Samples单位：计数 | 
| WriteProvisionedThroughputExceeded |  在指定时段内因流限制而被拒绝的记录数。该指标包含来自 `PutRecord` 和 `PutRecords` 操作的限制。此指标的最常用的统计数据为 Average。 当统计数据 Minimum 的值不为零时，流的记录在指定时段内将受限。 当统计数据 Maximum 的值为 0（零）时，流的任何记录在指定时段内将不受限。 分片级别指标名称：`WriteProvisionedThroughputExceeded` 尺寸： StreamName 统计数据：Minimum、Maximum、Average、Sum、Samples 单位：计数  | 

### 增强的分片级指标
<a name="kinesis-metrics-shard"></a>

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

Kinesis 每分钟向其发送以下分片级别的指标。 CloudWatch 每个指标维度都会创建 1 个 CloudWatch 指标，每月调用大约 43,200 `PutMetricData` 个 API。默认情况下，这些指标未启用。系统会对 Kinesis 发出的增强型指标收费。有关更多信息，请参阅 “[亚马逊* CloudWatch自定义指标” 标题下的亚马逊 CloudWatch *定价](https://aws.amazon.com/cloudwatch/pricing/)。按每个月每个指标每个分片收费。


| 指标 | 说明 | 
| --- | --- | 
| IncomingBytes |  在指定时段内成功放置到分片的字节数。该指标包含来自 `PutRecord` 和 `PutRecords` 的字节数。统计数据 Minimum、Maximum 和 Average 表示指定时段内分片的单个 put 操作中的字节数。 流级别指标名称：`IncomingBytes` 尺寸： StreamName， ShardId 统计数据：Minimum、Maximum、Average、Sum、Samples 单位：字节  | 
| IncomingRecords |  在指定时段内成功放置到分片的记录数。该指标包含来自 `PutRecord` 和 `PutRecords` 的记录数。统计数据 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` 操作中返回的字节数或指定时段内分片的单个 `SubscribeToShard` 事件中发布的字节数。 流级别指标名称：`GetRecords.Bytes` 尺寸： StreamName， ShardId 统计数据：Minimum、Maximum、Average、Sum、Samples 单位：字节  | 
| OutgoingRecords |  在指定时段内测量的从分片中检索的记录数。统计数据 Minimum、Maximum 和 Average 表示单个 `GetRecords` 操作中返回的记录数或指定时段内分片的单个 `SubscribeToShard` 事件中发布的记录数。 流级别指标名称：`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 |  在指定时段内因分片限制而被拒绝的记录数。此指标包括来自 `PutRecord` 和 `PutRecords` 操作的限制，并涵盖以下限制的所有维度：每分片每秒 1000 条记录或每分片每秒 1 MB。此指标的最常用的统计数据为 Average。 当统计数据 Minimum 的值不为零时，分片的记录在指定时段内将受限。 当统计数据 Maximum 的值为 0（零）时，分片的任何记录在指定时段内将不受限。 流级别指标名称：`WriteProvisionedThroughputExceeded` 尺寸： StreamName， ShardId 统计数据：Minimum、Maximum、Average、Sum、Samples 单位：计数  | 

### Amazon Kinesis Data Streams 指标的维度
<a name="kinesis-metricdimensions"></a>


|  维度  |  说明  | 
| --- | --- | 
|  StreamName  |  Kinesis 流的名称。所有可用统计数据按 `StreamName` 进行筛选。  | 

### 推荐的 Amazon Kinesis Data Streams 指标
<a name="kinesis-metric-use"></a>

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


| 指标 | 使用说明 | 
| --- | --- | 
|  `GetRecords.IteratorAgeMilliseconds`  |  跟踪流中所有分片和消费端的读取位置。如果某个迭代器的寿命超过了保留期的 50%（默认值为 24 小时，可配置为最高 7 天），则存在由于记录过期造成数据丢失的风险。我们建议您在最大值统计数据上使用 CloudWatch 警报，以便在此损失成为风险之前提醒您。要了解使用此指标的示例情景，请参阅[消费端记录处理滞后](troubleshooting-consumers.md#record-processing-falls-behind)。  | 
|  `ReadProvisionedThroughputExceeded`  |  当您的消费端端记录处理滞后时，有时难以确定瓶颈的位置。使用此指标可确定读取操作是否由于超出了读取吞吐量上限而受到限制。此指标的最常用的统计数据为 Average。  | 
| WriteProvisionedThroughputExceeded | 这与 ReadProvisionedThroughputExceeded 指标的用途相同，但是此指标用于流的创建者 (put) 端。此指标的最常用的统计数据为 Average。 | 
| PutRecord.Success, PutRecords.Success | 我们建议在 Average 统计数据上使用 CloudWatch 警报来指示何时无法进入直播。根据创建器所使用的对象选择一种或两种 put 类型。如果使用的是 Amazon Kinesis Producer Library（KPL），请使用 PutRecords.Success。 | 
| GetRecords.Success | 我们建议在 Average 统计数据上使用 CloudWatch 警报来指示数据流中何时出现记录失败。 | 

## 访问 Kinesis Data Streams 的亚马逊 CloudWatch 指标
<a name="cloudwatch-metrics"></a>

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

**使用 CloudWatch 控制台访问指标**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航栏中，选择一个区域。

1. 在导航窗格中，选择**指标**。

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

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

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

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

**要访问指标，请使用 AWS CLI**  
使用[列表指标和命令](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html)。[get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html)

**使用 CloudWatch CLI 访问指标**  
使用 [mon-list-metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/cli-mon-list-metrics.html) 和 [mon-get-stats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/cli-mon-get-stats.html) 命令。

**使用 CloudWatch API 访问指标**  
使用 [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html) 和 [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html) 操作。