あるデータエンジニアリングチームは、Amazon Kinesis Data Streams を使用してリアルタイムイベントデータを収集し、AWS Lambda 関数でコンシューム処理しています。 特定の時間帯に Lambda 関数の処理がストリームへの書き込みに追いつかなくなっていることが疑われています。 チームは Amazon CloudWatch を使用してコンシューマーの処理遅延(コンシューマーラグ)を定量的に監視したいと考えています。 監視すべき CloudWatch メトリクスとして最も適切なものはどれですか?
GetRecords.IteratorAgeMilliseconds はコンシューマーが最後に取得したレコードがストリームに書き込まれてからの経過時間(ミリ秒)を示します。この値が増加するほどコンシューマーがプロデューサーに追いついておらず、処理遅延の大きさを定量的に把握できる最適な指標です。 選択肢AのGetRecords.Bytesは読み取ったデータ量(バイト数)を示すメトリクスであり、処理遅延の有無や大きさの判断には使用できません。 選択肢CのPutRecord.Successはプロデューサー側のレコード書き込み成功率を示すメトリクスであり、コンシューマーの遅延計測には無関係です。 選択肢DのReadProvisionedThroughputExceededはコンシューマーがスループットの制限(Throttling)に遭遇した回数を示しますが、遅延の大きさを定量的に表す指標ではありません。