Kinesis Data Streams の問題をモニタリングおよびトラブルシューティングするには、どのメトリクスを使用する必要がありますか?

所要時間2分
0

Amazon Kinesis Data Streams の受信データと送信データをモニタリングしたいと考えています。

解決策

ストリームレベルのメトリクスを使用する

Amazon CloudWatch メトリクスを使用すると、Amazon Kinesis Data Streams のパフォーマンスとスループットを継続的にモニタリングすることができます。次のメトリクスは、プロデューサーとコンシューマーの問題のモニタリングに役立ちます。

GetRecords.IteratorAgeMilliseconds
GetRecords.IteratorAgeMilliseconds は、すべての GetRecords リクエストに対してストリーム内の最後のレコードの経過時間をミリ秒単位で測定します。このメトリクスの値 0 は、レコードがストリーム内で最新であることを示しています。値は小さい方がお勧めです。パフォーマンスの問題をモニタリングするには、ストリームのコンシューマーの数を増やして、データがより迅速に処理されるようにします。アプリケーションコードを最適化するには、コンシューマーの数を増やしてレコード処理の遅延を軽減します。

ReadProvisionedThroughputExceeded
ReadProvisionedThroughputExceeded は、Kinesis Data Streams のサービス制限またはシャード制限を超えて、 所定の期間にスロットリングされた GetRecords 呼び出しの数を測定します。値 0 は、データコンシューマーがサービスクォータを超えていないことを示しています。その他の値は、スループット制限を超過し、追加のシャードが必要であることを示します。このメトリクスは、ストリームが 5 つの読み込み /秒/シャードまたは 2 MB/ 秒/シャードを超えないことを確認します。拡張モニタリングを有効にすると、ストリームにホットシャードがないことを検証できます。

WriteProvisionedThroughputExceeded
WriteProvisionedThroughputExceededは、ストリームがスロットリングされていないか判断するために、PUT またはデータプロデューサー (ReadProvisionedThroughputExceeded など) を測定します。これは、シャードに書き込むときのデータストリームのサービスクォータを超えています。PUT リクエストが 1 MB/ 秒/シャードまたは 1,000 レコード/シャード/秒を超えないようにしてください。必ずパーティションキー均等に分散されていることを確認し、拡張モニタリングを有効にしてストリーム内のホットシャードを検証します。シャードの飽和度に応じてストリーム内のシャード数を更新し、スループットの増加を許可してください。

PutRecord.Success および PutRecords.Success
PutRecord.Success および PutRecords.Success は、データプロデューサーによって指定された期間中にストリームへの PutRecords リクエストが成功したレコードの数を測定します。このメトリクスは、失敗したレコードに対する有効な再試行ロジックを確認します。

GetRecords.Success
GetRecords.Success は、ストリーム内の指定された期間に成功した GetRecords リクエストの数を測定します。これにより、失敗したレコードに対する有効な再試行ロジックが確認されます。

GetRecords.Latency
GetRecords.Latency は、指定された期間にストリームで各 GetRecords オペレーションにかかった時間を測定します。これにより、ストリームスループットの増加に対して十分な物理リソースまたはレコード処理ロジックがあることが確認されます。また、より大きなデータのバッチを処理して、アプリケーションのネットワークやその他のダウンストリームのレイテンシーを短縮します。Kinesis クライアントライブラリ (KCL) の場合は、ProcessTask.Time メトリクスを調べて、遅延しているアプリケーションの処理時間をモニタリングします。GetRecords.Latency メトリクスは、IDLE_TIME_BETWEEN_READS_IN_MILLIS がストリーム処理に対応するように設定されていることを確認します。

PutRecords.Latency
PutRecords.Latency は、指定された期間にストリームでの各 PutRecords オペレーションにかかった時間を測定します。PutRecords.Latency 値が大きい場合は、レコードをより大きなファイルに集約して、バッチデータを Kinesis Data Streams に配置します。複数のスレッドを使用してデータを書き込むこともできます。PutRecords API のスロットリングと再試行ロジックは、レイテンシーと、ストリームの PutRecords オペレーションごとにかかった時間に影響する可能性があります。次に、リストされたメトリクスの Average 統計を使用して、ストリームのパフォーマンスとスループットをモニタリングします。
注: GetRecords.IteratorageMilliSeconds については、読み取りオペレーションより遅れているコンシューマーのデータ損失のリスクを軽減するために、Maximum 統計を使用します。メトリクスに対して評価されるデータポイントに応答するように CloudWatch アラームを設定します。CloudWatch アラームの詳細については、「Amazon CloudWatch でのアラームの使用」を参照してください。

拡張ファンアウト機能を使用している場合は、次のメトリクスを使用して Kinesis Data Streams をモニタリングします。

SubscribeToShard.RateExceeded: オペレーションで許可されている、またはアクティブなサブスクリプションがすでに存在しているためにサブスクリプションの試行が失敗した場合に、1 秒あたりの呼び出し数の超過を測定します。

SubscribeToShard.Success: SubscribeToShard オペレーションが成功するかどうかを確認します。

SubscribeToShardEvent.Success: アクティブなサブスクリプションのイベントが正常に発行されたことを確認します。

SubscribeToShardEvent.Bytes: 指定された期間にシャードで受け取ったバイト数を測定します。

SubscribeToShardEvent.Records: 指定した期間にシャードで受け取ったレコードの数を測定します。

SubscribeToShardEvent.MillisBehindLatest: ストリームに書き込まれた SubscribeToShard イベントの現在の時刻と最後のレコードの差を測定します。

拡張シャードレベルのメトリクスの有効化

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

CloudWatch でシャードレベルのメトリクスを有効にして特定のタスクをモニタリングし、データプロデューサーとコンシューマーの問題をトラブルシューティングします。例えば、シャードレベルのメトリクスを有効にすると、不均等なワークロード分散などの問題を特定するのに役立ちます。拡張モニタリングを有効にするには、以下の手順を実行します。

注: EnableEnhancedMonitoringAPI リクエスト または enable-enhanced-monitoring AWS CLI を使用することもできます。. 

  1. Kinesis コンソールを開きます。
  2. 特定の [リージョン] を選択します。
  3. ナビゲーションペインで [Data Streams] をクリックします。
  4. [データストリーム名] で、お使いの Kinesis Data Streams を選択します。
  5. [設定] を選択します。
  6. [拡張 (シャードレベル) メトリクス][編集] を選択します。
  7. ドロップダウンメニューから、拡張モニタリングのメトリクスを選択します。
  8. [変更を保存] を選択します。

API コールに関するその他のトラブルシューティング

以下の API コールを使用して、Kinesis Data Streams からデータを読み書きします。

  • CreateStream: アカウントごとに 1 秒あたり 5 件のトランザクションに制限されます。
  • DeleteStream: アカウントごとに 1 秒あたり 5 件のトランザクションに制限されます。
  • ListStreams: アカウントごとに 1 秒あたり 5 件のトランザクションに制限されます。
  • GetShardIterator: 開いているシャードごと、アカウントごとに 1 秒あたり 5 件のトランザクションに制限されます。
  • MergeShards: アカウントごとに 1 秒あたり 5 件のトランザクションに制限されます。
  • DescribeStream: アカウントごとに 1 秒あたり 10 件のトランザクションに制限されます。
  • DescribeStreamSummary: アカウントごとに 1 秒あたり 20 件のトランザクションに制限されます。

これらの API コールを使用すると、AWS CloudTrail ログのスロットリングをモニタリングできます。Kinesis データストリーム API コールと CloudTrail の詳細については、「Logging Amazon Kinesis Data Streams API calls with AWS CloudTrail」を参照してください。

関連情報

Amazon CloudWatch 料金表

Monitoring the Amazon Kinesis Data Streams service with Amazon CloudWatch

AWS公式
AWS公式更新しました 5ヶ月前
コメントはありません