あるデータエンジニアリングチームは、Amazon Managed Streaming for Apache Kafka(Amazon MSK)を使用してIoTセンサーデータをリアルタイムで取り込んでいます。コンシューマーアプリケーションが負荷増大時にメッセージの処理が追いつかなくなる事象が発生しており、コンシューマーラグ(コンシューマーがプロデューサーの書き込みに対して遅延しているオフセット量)をリアルタイムに監視し、閾値を超えた場合にアラートを発報したいと考えています。 最も適切な方法はどれですか?
Amazon MSKはコンシューマーグループモニタリングを有効化することで、SumOffsetLag(全パーティションの合計オフセットラグ)・MaxOffsetLag・EstimatedTimeLagなどのメトリクスをAmazon CloudWatchに自動公開します。これらのメトリクスを使ってCloudWatchアラームを設定することで、追加のコーディングなしにコンシューマーラグの監視とアラート発報を実現できます。 選択肢BのCloudWatch Logsメトリクスフィルターはブローカーログにオフセット情報が出力される保証がなく、信頼性の高いラグ計測には不適切です。 選択肢Cのストリーム処理エンジンはデータ変換・集計が主目的であり、コンシューマーグループのオフセット監視ポーリングには過剰な構成です。 選択肢DのLambdaによるカスタムメトリクス送信は機能しますが、スケジューリング・Lambda実装・エラーハンドリングなど追加の実装コストがかかります。MSKのネイティブ機能を利用する選択肢Aが最も適切です。