Amazon Kinesis Data Streams
開発者ガイド

Amazon CloudWatch による Amazon Kinesis Data Streams サービスのモニタリング

Amazon Kinesis Data Streams と Amazon CloudWatch は統合されているため、Kinesis データストリームの CloudWatch メトリクスを収集、表示、および分析できます。たとえば、シャードの使用状況の追跡に、PutRecords.Bytes メトリックス GetRecords.Bytes とメトリックスをモニタリングし、ストリーム内のシャード数と比較できます。

ストリーム用に設定するメトリクスは、自動的に収集され、1 分おきに CloudWatch にプッシュされます。2 週間分のメトリクスがアーカイブされ、その期間が経過したデータは破棄されます。

次の表は、Kinesis データストリームの基本的なストリームレベルと拡張シャードレベルのモニタリングについて説明しています。

タイプ 説明

ベーシック (ストリームレベル)

ストリーム レベルのデータは、1 分間ごとに自動的に送信されます。料金は発生しません。

拡張 (シャードレベル)

シャードレベルのデータは、1分ごとに送信されます。追加料金が発生します。このレベルのデータを取得するには、EnableEnhancedMonitoring 操作を使用してストリームを明示的に有効にする必要があります。

料金の詳細については、Amazon CloudWatch 製品ページを参照してください。

Amazon Kinesis Data Streams のディメンションおよびメトリクス

Kinesis Data Streams は、ストリームレベルとオプションのシャードレベルの 2 つのレベルでメトリクスを CloudWatch に送信します。ストリームレベルのメトリクスは、通常の条件での最も一般的なモニタリングのユースケース用です。シャードレベルのメトリクスは、通常トラブルシューティングに関連する特定のモニタリングタスクで、EnableEnhancedMonitoring 操作を使用して有効になります。

CloudWatch メトリクスから収集された統計の説明については、Amazon CloudWatch ユーザーガイド の「CloudWatch の統計」を参照してください。

基本ストリームレベルメトリクス

AWS/Kinesis 名前空間には、次のストリームレベルメトリクスが含まれます。

Kinesis Data Streams は、1 分ごとにこれらのストリームレベルメトリクスを 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

単位: 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

指定された期間に測定された、Kinesis ストリームごとの PutRecords オペレーションの正常なレコード数。

ディメンション: StreamName

統計: Minimum、Maximum、Average、Sum、Samples

単位: Count

PutRecords.Success

指定された期間に測定された、Kinesis ストリームあたりの最低 1 つのレコードが成功した PutRecords オペレーションの数。

ディメンション: StreamName

統計: Average、Sum、Samples

単位: Count

ReadProvisionedThroughputExceeded

指定された期間のストリームで調整された GetRecords 呼び出し回数。このメトリクスで最も一般的に使用される統計は Average です。

Minimum の統計の値が 1 の場合、指定された期間にストリームについてすべてのレコードが調整されました。

Maximum の統計の値が 0 (ゼロ) の場合、指定された期間にストリームについてどのレコードも調整されていません。

シャードレベルメトリクス名: ReadProvisionedThroughputExceeded

ディメンション: StreamName

統計: Minimum、Maximum、Average、Sum、Samples

単位: Count

SubscribeToShard.RateExceeded

このメトリックスは、同じコンシューマーによるアクティブなサブスクリプションがすでにあるため新しいサブスクリプションが失敗したとき、またはこのオペレーションで許可される 1 秒あたりの呼び出し回数を超えた場合に出力されます。

ディメンション: StreamName、ConsumerName
SubscribeToShard.Success

このメトリックスは、SubscribeToShard サブスクリプションが正常に確立されたかどうかを記録します。このサブスクリプションの有効期間は最大で 5 分のみです。したがって、このメトリックスは少なくとも 5 分に 1 回発行されます。

ディメンション: StreamName、ConsumerName

SubscribeToShardEvent.Bytes

指定された期間に測定された、シャードから受信したバイト数。Minimum、Maximum、および Average の統計は、指定した期間内の単一イベントで発行されたバイト数です。

シャードレベルメトリクス名: OutgoingBytes

ディメンション: StreamName、ConsumerName

統計: Minimum、Maximum、Average、Sum、Samples

単位: バイト

SubscribeToShardEvent.MillisBehindLatest

現在の時刻と、SubscribeToShard イベントの最後のレコードがストリームに書き込まれた時刻の差です。

ディメンション: 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

拡張シャードレベルメトリクス

AWS/Kinesis 名前空間には、次のシャードレベルメトリクスが含まれます。

Kinesis は、1 分ごとに次のシャードレベルメトリクスを CloudWatch に送信します。デフォルトでは、これらのメトリクスは有効ではありません。Kinesis から発生した拡張メトリクスには、料金がかかります。詳細については、Amazon CloudWatch 料金表で「Amazon CloudWatch カスタムメトリクス」の項目を参照してください。料金は、1 ヶ月あたりのシャードごとに表示されます。

メトリクス 説明
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 呼び出し回数。この例外カウントは、1 秒あたり 1 つのシャードあたり 5 回の読み込みまたは 1 つのシャードあたり 1 秒あたり 2 MB の制限のすべてのディメンションを含みます。このメトリクスで最も一般的に使用される統計は Average です。

Minimum の統計の値が 1 の場合、指定された期間にシャードについてすべてのレコードが調整されました。

Maximum の統計の値が 0 (ゼロ) の場合、指定された期間にシャードについてどのレコードも調整されていません。

ストリームレベルメトリクス名: ReadProvisionedThroughputExceeded

ディメンション: StreamName、ShardId

統計: Minimum、Maximum、Average、Sum、Samples

単位: Count

WriteProvisionedThroughputExceeded

指定された期間にシャードのスロットリングにより拒否されたレコードの数。このメトリクスには、PutRecord および PutRecords オペレーションのスロットリングが含まれ、さらに、1 つのシャードあたり 1 秒あたり 1,000 レコードまたは 1 つのシャードあたり 1 秒あたり 1 MB の制限のすべてのディメンションが含まれます。このメトリクスで最も一般的に使用される統計は Average です。

Minimum の統計がゼロ以外の値の場合、指定された期間にシャードについてレコードが調整中でした。

Maximum の統計の値が 0 (ゼロ) の場合、指定された期間のシャードで、どのレコードも調整中ではありませんでした。

ストリームレベルメトリクス名: WriteProvisionedThroughputExceeded

ディメンション: StreamName、ShardId

統計: Minimum、Maximum、Average、Sum、Samples

単位: Count

Amazon Kinesis Data Streams メトリクスのディメンション

Amazon Kinesis Data Streams のメトリクスをフィルタするには、次のディメンションを使用できます。

ディメンション 説明

StreamName

Kinesis ストリームの名前。

ShardId

Kinesis ストリーム 内のシャード ID。

推奨 Amazon Kinesis Data Streams メトリクス

Amazon Kinesis Data Streams メトリクスのいくつかは、Kinesis Data Streams のお客様に特に重要です。次のリストは推奨メトリクスとご利用方法を提供しています。

メトリクス 使用に関する注意事項

GetRecords.IteratorAgeMilliseconds

ストリームのすべてのシャードとコンシューマーの読み込み場所を追跡します。イテレータの経過日数が保持期間 (デフォルトで 24 時間、最大で 7 日まで設定可能) の 50% を経過すると、レコードの有効期限切れによるデータ損失のリスクがあります。この損失がリスクになる前に警告するように、最大統計の CloudWatch アラームを使用することをお勧めします。このメトリクスを使用するシナリオ例は、「コンシューマーレコードの処理が遅れる」を参照してください。

ReadProvisionedThroughputExceeded

コンシューマー側のレコード処理に後れが生じているときに、ボトルネックがどこにあるかを確認するのは難しい場合があります。このメトリクスを使用して、読み取りスループット制限を超えたために、読み取りが調整されているかを判断してください。このメトリクスで最も一般的に使用される統計は Average です。

WriteProvisionedThroughputExceeded これは、ReadProvisionedThroughputExceeded メトリクスと同じ目的ですが、ストリームのプロデューサ (PUT) 側用です。このメトリクスで最も一般的に使用される統計は Average です。
PutRecord.SuccessPutRecords.Success レコードがストリームに後れていることを示す平均統計の CloudWatch アラームを使用することをお勧めします。プロデューサーが使用しているものに応じて、一つまたは両方の種類の PUT 種類を選択します。Kinesis Producer Library (KPL) を使用している場合は、PutRecords.Success を使用します。
GetRecords.Success レコードがストリームの役に立っていないことを示す平均統計の CloudWatch アラームを使用することをお勧めします。

の メトリクスへのアクセス

CloudWatch コンソール、コマンドライン、または CloudWatch API を使用して、Kinesis Data Streams のメトリクスをモニタリングできます。次の手順は、これらのさまざまなメソッドを使用してメトリクスにアクセスする方法を示しています。

CloudWatch コンソールを使用してメトリクスにアクセスするには

  1. https://console.aws.amazon.com/cloudwatch/にある 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 オペレーションを使用します。