

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon CloudWatch 監控 Amazon Kinesis Data Streams 服務 Amazon CloudWatch
<a name="monitoring-with-cloudwatch"></a>

Amazon Kinesis Data Streams 與 Amazon CloudWatch 整合，因此您可以收集、檢視和分析 Kinesis 資料串流的 CloudWatch 指標。例如，若要追蹤碎片用量，您可以監控 `IncomingBytes` 和 `OutgoingBytes` 指標，並將它們與串流中的碎片數量比較。

您設定的串流指標和碎片層級指標會每分鐘自動收集並推送至 CloudWatch。指標將封存兩週，之後即會捨棄資料。

下表說明 Kinesis 資料串流的基本串流層級和增強之碎片層級監控。


| 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。這些是一律可用的指標。


| 指標 | Description | 
| --- | --- | 
| 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 單位：Count  | 
| GetRecords.Success |  每個串流的成功 `GetRecords` 操作數目，這是對指定的期間進行測量。 維度：StreamName 統計資訊：Average、Sum、Samples 單位：Count  | 
| 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 單位：Count  | 
| PutRecord.Bytes |  在指定的期間內，使用 `PutRecord` 操作放入 Kinesis 串流的位元組數目。 維度：StreamName 統計資訊：Minimum、Maximum、Average、Sum、Samples 單位：位元組  | 
| PutRecord.Latency |  每個 `PutRecord` 操作所需的時間，這是對指定的期間進行測量。 維度：StreamName 統計資訊：Minimum、Maximum、Average 單位：毫秒  | 
| PutRecord.Success |  每個 Kinesis 串流的成功 `PutRecord` 操作數目，這是對指定的期間進行測量。Average 會反映成功寫入至串流的百分比。 維度：StreamName 統計資訊：Average、Sum、Samples 單位：Count  | 
| 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 單位：Count  | 
| PutRecords.Success |  每個 Kinesis 串流中至少有一筆記錄成功的 `PutRecords` 操作數目，這是對指定的期間進行測量。 維度：StreamName 統計資訊：Average、Sum、Samples 單位：Count  | 
| PutRecords.TotalRecords |  每個 Kinesis 資料串流之 `PutRecords` 操作中的記錄總數，這是對指定的期間進行測量。 維度：StreamName 統計資訊：Minimum、Maximum、Average、Sum、Samples 單位：Count  | 
| PutRecords.SuccessfulRecords |  每個 Kinesis 資料串流之 `PutRecords` 操作中的成功記錄數目，這是對指定的期間進行測量。 維度：StreamName 統計資訊：Minimum、Maximum、Average、Sum、Samples 單位：Count  | 
| PutRecords.FailedRecords |  由於內部失敗，每個 Kinesis 資料串流之 `PutRecords` 操作中遭拒的記錄數目，這是對指定的期間進行測量。偶爾的內部故障是預料中的，應該重試。 維度：StreamName 統計資訊：Minimum、Maximum、Average、Sum、Samples 單位：Count  | 
| PutRecords.ThrottledRecords |  每個 Kinesis 資料串流之 `PutRecords` 操作中的由於限流遭拒的記錄數目，這是對指定的期間進行測量。 維度：StreamName 統計資訊：Minimum、Maximum、Average、Sum、Samples 單位：Count  | 
| ReadProvisionedThroughputExceeded |  在指定的期間內，針對串流進行調節的 `GetRecords` 呼叫數目。此指標的最常用統計資訊是 Average。 Minimum 統計資訊的值為 1 時，已在指定期間內調節串流的所有記錄。 Maximum 統計資訊的值為 0 (零) 時，未在指定期間內調節串流的任何記錄。 分區層級指標名稱：`ReadProvisionedThroughputExceeded` 維度：StreamName 統計資訊：Minimum、Maximum、Average、Sum、Samples 單位：Count  | 
| 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 單位：Count  | 
| SubscribeToShardEvent.Success | 此指標會在每次事件成功發佈時發出。只在有作用中訂閱時此發出此指標。維度：StreamName、ConsumerName統計資訊：Minimum、Maximum、Average、Sum、Samples單位：Count | 
| WriteProvisionedThroughputExceeded |  因在指定期間內調節串流而拒絕的記錄數目。此指標包含來自 `PutRecord` 與 `PutRecords` 操作的調節。此指標的最常用統計資訊是 Average。 Minimum 統計資訊的值為非零時，正在指定期間內調節串流的記錄。 Maximum 統計資訊的值為 0 (零) 時，目前未在指定期間內調節串流的所有記錄。 分區層級指標名稱：`WriteProvisionedThroughputExceeded` 維度：StreamName 統計資訊：Minimum、Maximum、Average、Sum、Samples 單位：Count  | 

### 增強的碎片層級指標
<a name="kinesis-metrics-shard"></a>

`AWS/Kinesis` 命名空間包含下列分區層級指標。

Kinesis 會每分鐘將下列碎片層級指標傳送至 CloudWatch。每個指標維度會建立 1 個 CloudWatch 指標，每個月進行大約 43,200 個 `PutMetricData` API 呼叫。預設不會啟用這些指標。Kinesis 發出之增強型指標會收取費用。如需詳細資訊，請參閱 *Amazon CloudWatch 定價*下的[ Amazon CloudWatch 自訂指標](https://aws.amazon.com/cloudwatch/pricing/)。每個月每個指標的每個分區都會收取費用。


| 指標 | Description | 
| --- | --- | 
| 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 單位：Count  | 
| 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 單位：Count  | 
| ReadProvisionedThroughputExceeded |  在指定的期間內，針對分區進行調節的 `GetRecords` 呼叫數目。這項例外計數涵蓋下列限制的所有維度：每秒每個分區 5 次讀取或每個分區每秒 2 MB。此指標的最常用統計資訊是 Average。 Minimum 統計資訊的值為 1 時，已在指定期間內調節分區的所有記錄。 Maximum 統計資訊的值為 0 (零) 時，未在指定期間內調節分區的任何記錄。 串流層級指標名稱：`ReadProvisionedThroughputExceeded` 維度：StreamName、ShardId 統計資訊：Minimum、Maximum、Average、Sum、Samples 單位：Count  | 
| WriteProvisionedThroughputExceeded |  因在指定期間內調節分區而拒絕的記錄數目。此指標包含來自 `PutRecord` 與 `PutRecords` 操作的調節，並涵蓋下列限制的所有維度：每個分區每秒 1,000 筆記錄或每個分區每秒 1 MB。此指標的最常用統計資訊是 Average。 Minimum 統計資訊的值為非零時，正在指定期間內調節分區的記錄。 Maximum 統計資訊的值為 0 (零) 時，未在指定期間內調節分區的任何記錄。 串流層級指標名稱：`WriteProvisionedThroughputExceeded` 維度：StreamName、ShardId 統計資訊：Minimum、Maximum、Average、Sum、Samples 單位：Count  | 

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


|  維度  |  Description  | 
| --- | --- | 
|  StreamName  |  Kinesis 串流名稱。所有可用的統計資訊皆以 `StreamName` 篩選。  | 

### 建議的 Amazon Kinesis Data Streams 指標
<a name="kinesis-metric-use"></a>

Kinesis 資料串流客戶可能會對數個 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 | 建議在平均統計資料上使用 CloudWatch 警示來指示對串流失敗的記錄。根據生產程式的用途，選擇其中一個或兩個 put 類型。如果使用 Amazon Kinesis Producer Library (KPL)，請使用 PutRecords.Success。 | 
| GetRecords.Success | 建議在平均統計資料上使用 CloudWatch 警示來指示自串流失敗之記錄的時間。 | 

## 存取 Kinesis Data Streams 的 Amazon CloudWatch 指標
<a name="cloudwatch-metrics"></a>

您可以使用 CloudWatch 主控台、命令列或 CloudWatch API 來監控 Kinesis Data Streams 指標。以下程序將說明如何使用這些不同的方法來存取指標。

**使用 CloudWatch 主控台檢視指標**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽列上，選擇一個區域。

1. 在導覽窗格中，選擇 **指標**。

1. 在 **CloudWatch Metrics by Category (依類別的 CloudWatch 指標)** 窗格中，選擇 **Kinesis Metrics (Kinesis 指標)**。

1. 按一下相關資料列來檢視指定 **MetricName** 和 **StreamName** 的統計資料。

   **注意：**大多數主控台統計資料名稱符合先前列出的對應 CloudWatch 指標名稱，**但讀取輸送量**和**寫入輸送量**除外。系統會在 5 分鐘的間隔計算這些統計資料：**寫入輸送量**會監控 `IncomingBytes` CloudWatch 指標，**讀取輸送量**會監控 `GetRecords.Bytes`。

1. (選用) 在圖形窗格中，選取統計資料和時段，然後利用這些設定來建立 CloudWatch 警示。

**使用 存取指標 AWS CLI**  
使用 [list-metrics](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) 操作。