メニュー
Amazon Kinesis Data Streams
開発者ガイド

Amazon CloudWatch による Kinesis クライアントライブラリのモニタリング

Kinesis Client Library (KCL) for Amazon Kinesis Data Streams は、ユーザーに代わって、名前空間として KCL アプリケーションの名前を使用して、カスタム Amazon CloudWatch メトリクスを発行します。CloudWatch コンソール に移動し、[Custom Metrics] を選択すると、これらのメトリクスを表示できます。カスタムメトリクスの詳細については、『Amazon CloudWatch ユーザーガイド』の「カスタムメトリクスをパブリッシュする」を参照してください。

KCL によって CloudWatch にアップロードされたメトリクスには、小額の課金が発生します。具体的には、Amazon CloudWatch カスタムメトリクスAmazon CloudWatch API リクエストの料金が適用されます。詳細については、「Amazon CloudWatch 料金表」を参照してください。

メトリクスと名前空間

メトリクスのアップロードに使用される名前空間は、KCL の起動時に指定されたアプリケーション名です。

メトリクスレベルとディメンション

CloudWatch にアップロードされるメトリクスを制御する 2 つのオプションがあります。

メトリクスレベル

すべてのメトリクスに、個別のレベルが割り当てられます。メトリクスのレポートレベルを設定すると、レポートレベル以下の個別のレベルのメトリクスは CloudWatch に送信されません。このレベルとして、NONESUMMARYDETAILED があります。デフォルト設定は DETAILED であり、すべてのメトリクスが CloudWatch に送信されます。レポートレベル NONE は、メトリクスがまったく送信されないことを意味します。各メトリクスに割り当てられるメトリクスの詳細については、「メトリクスの一覧」を参照してください。

有効なディメンション

各 KCL メトリクスには、CloudWatch にも送信される関連ディメンションがあります。Operation ディメンションは常にアップロードされ、無効にすることはできません。デフォルトでは、WorkerIdentifier ディメンションは無効となり、Operation および ShardId ディメンションのみがアップロードされます。

CloudWatch メトリクスディメンションの詳細については、Amazon CloudWatch ユーザーガイドの「Amazon CloudWatch の概念」トピックの「ディメンション」セクションを参照してください。

WorkerIdentifier ディメンションが有効で、特定の KCL ワーカーが再起動するたびに、ワーカー ID プロパティに異なる値が使用される場合、新しい WorkerIdentifier ディメンション値を持つ新しいメトリクスのセットが CloudWatch に送信されます。特定の KCL ワーカーの再起動で、WorkerIdentifier ディメンションの値が同じである必要がある場合、各ワーカーに初期化中に、明示的に同じワーカー ID 値を指定する必要があります。アクティブな各 KCL ワーカーのワーカー ID 値は、すべての KCL ワーカー間で一意である必要があります。

メトリクスの設定

メトリクスレベルと有効なディメンションは、KinesisClientLibConfiguration インスタンスを使用して設定でき、このインスタンスは KCL アプリケーションを起動するときにワーカーに渡されます。MultiLangDaemon の場合、metricsLevel および metricsEnabledDimensions プロパティは、MultiLangDaemon KCL アプリケーションを起動するために使用される .properties ファイルで指定できます。

メトリクスレベルには、NONE、SUMMARY、または DETAILED の 3 つの値のうち 1 つを割り当てることができます。有効なディメンションの値は、CloudWatch メトリクスで許可されているディメンションのリストを含むカンマ区切りの文字列である必要があります。KCL アプリケーションによって使用されるディメンションは、OperationShardId、および WorkerIdentifier です。

メトリクスの一覧

次の表には、範囲および操作によってグループ分けされた KCL メトリクスが表示されています。

KCL アプリケーションあたりのメトリクス

これらのメトリクスは、Amazon CloudWatch 名前空間で定義されているように、アプリケーションの範囲内にあるすべての KCL ワーカーで集約されます。

InitializeTask

InitializeTask オペレーションは、KCL アプリケーションのレコードプロセッサを初期化します。このオペレーションのロジックには、Kinesis Data Streams からのシャードイテレーターの取得とレコードプロセッサの初期化が含まれています。

メトリクス 説明
KinesisDataFetcher.getIterator.Success

KCL アプリケーションあたりの GetShardIterator オペレーションの成功回数。

メトリクスレベル: Detailed

単位: Count

KinesisDataFetcher.getIterator.Time

指定された KCL アプリケーションの GetShardIterator オペレーションにかかった時間。

メトリクスレベル: Detailed

単位: ミリ秒

RecordProcessor.initialize.Time

レコードプロセッサの初期化メソッドにかかった時間。

メトリクスレベル: Summary

単位: ミリ秒

Success

レコードプロセッサの初期化の成功回数。

メトリクスレベル: Summary

単位: Count

時間

KCL ワーカーでレコードプロセッサの初期化にかかった時間。

メトリクスレベル: Summary

単位: ミリ秒

ShutdownTask

ShutdownTask オペレーションは、シャード処理のシャットダウンシーケンスを開始します。これは、シャードが分割または結合された場合やシャードリースがワーカーから失われた場合に発生する場合があります。どちらの場合も、レコードプロセッサ shutdown() 関数が呼び出されます。また、シャードが分割または結合された場合、新しいシャードが 1 つまたは 2 つ作成されるため、新しいシャードが検出されます。

メトリクス 説明
CreateLease.Success

親シャードのシャットダウンの後に、新しい子シャードが KCL アプリケーションの DynamoDB テーブルに正常に追加された回数。

メトリクスレベル: Detailed

単位: Count

CreateLease.Time

KCL アプリケーションの DynamoDB テーブルに新しい子シャード情報を追加するのにかかった時間。

メトリクスレベル: Detailed

単位: ミリ秒

UpdateLease.Success

レコードプロセッサのシャットダウン中に成功した最終チェックポイントの数。

メトリクスレベル: Detailed

単位: Count

UpdateLease.Time

レコードプロセッサのシャットダウン中にチェックポイントオペレーションにかかった時間。

メトリクスレベル: Detailed

単位: ミリ秒

RecordProcessor.shutdown.Time

レコードプロセッサのシャットダウンメソッドにかかった時間。

メトリクスレベル: Summary

単位: ミリ秒

Success

シャットダウンタスクの成功回数。

メトリクスレベル: Summary

単位: Count

時間

KCL ワーカーでシャットダウンタスクにかかった時間。

メトリクスレベル: Summary

単位: ミリ秒

ShardSyncTask

ShardSyncTask オペレーションは、Kinesis data stream のシャード情報に対する変更を検出するため、新しいシャードは KCL アプリケーションで処理することができます。

メトリクス 説明
CreateLease.Success

KCL アプリケーションの DynamoDB テーブルへの新しいシャード情報の追加が成功した回数。

メトリクスレベル: Detailed

単位: Count

CreateLease.Time

KCL アプリケーションの DynamoDB テーブルに新しいシャード情報を追加するのにかかった時間。

メトリクスレベル: Detailed

単位: ミリ秒

Success

シャード同期オペレーションの成功回数。

メトリクスレベル: Summary

単位: Count

時間

シャード同期オペレーションにかかった時間。

メトリクスレベル: Summary

単位: ミリ秒

BlockOnParentTask

シャードが分割または他のシャードと結合された場合、新しい子シャードが作成されます。BlockOnParentTask オペレーションは、KCL による親シャードの処理が完了するまで、新しいシャードのレコード処理を開始しないことを保証します。

メトリクス 説明
Success

親シャードの完了チェックの成功回数。

メトリクスレベル: Summary

単位: Count

時間

親シャードが完了するまでにかかった時間。

メトリクスレベル: Summary

単位: ミリ秒

ワーカーあたりのメトリクス

これらのメトリクスは、Amazon EC2 インスタンスのように Kinesis data stream のデータを消費するすべてのレコードプロセッサについて集約されます。

トピック

RenewAllLeases

RenewAllLeases オペレーションは、特定のワーカーインスタンスによって所有されるシャードリースを定期的に更新します。

メトリクス 説明
RenewLease.Success

ワーカーによるリース更新の成功回数。

メトリクスレベル: Detailed

単位: Count

RenewLease.Time

リース更新オペレーションにかかった時間。

メトリクスレベル: Detailed

単位: ミリ秒

CurrentLeases

すべてのリースの更新後にワーカーによって所有されているシャードリースの数。

メトリクスレベル: Summary

単位: Count

LostLeases

ワーカーによって所有されているすべてのリースの更新を試みたときに失われたシャードリースの数。

メトリクスレベル: Summary

単位: Count

Success

ワーカーのリース更新オペレーションが成功した回数。

メトリクスレベル: Summary

単位: Count

時間

ワーカーのすべてのリースを更新するのにかかった時間。

メトリクスレベル: Summary

単位: ミリ秒

TakeLeases

TakeLeases オペレーションは、すべての KCL ワーカー間でレコード処理の負荷を分散させます。現在の KCL ワーカーのシャードリースが、必要数を下回る場合、過負荷になっている他のワーカーからシャードリースを取得します。

メトリクス 説明
ListLeases.Success

すべてのシャードリースが KCL アプリケーションの DynamoDB テーブルから正常に取得された回数。

メトリクスレベル: Detailed

単位: Count

ListLeases.Time

KCL アプリケーションの DynamoDB テーブルからすべてのシャードリースを取得するのにかかった時間。

メトリクスレベル: Detailed

単位: ミリ秒

TakeLease.Success

ワーカーが他の KCL ワーカーからシャードリースを正常に取得した回数。

メトリクスレベル: Detailed

単位: Count

TakeLease.Time

ワーカーが取得したリースを使用してリーステーブルを更新するのにかかった時間。

メトリクスレベル: Detailed

単位: ミリ秒

NumWorkers

特定のワーカーにより識別されるワーカーの総数。

メトリクスレベル: Summary

単位: Count

NeededLeases

現在のワーカーがシャード処理の負荷を分散するのに必要なシャードリースの数。

メトリクスレベル: Detailed

単位: Count

LeasesToTake

ワーカーが取得を試みるリースの数。

メトリクスレベル: Detailed

単位: Count

TakenLeases

ワーカーが取得に成功したリースの数。

メトリクスレベル: Summary

単位: Count

TotalLeases

KCL アプリケーションが処理しているシャードの総数。

メトリクスレベル: Detailed

単位: Count

ExpiredLeases

特定のワーカーによって識別されるどのワーカーでも処理されていないシャードの総数。

メトリクスレベル: Summary

単位: Count

Success

TakeLeases オペレーションが正常に完了した回数。

メトリクスレベル: Summary

単位: Count

時間

ワーカーの TakeLeases オペレーションにかかった時間。

メトリクスレベル: Summary

単位: ミリ秒

シャードあたりのメトリクス

これらのメトリクスは、単一のレコードプロセッサについて集約されます。

ProcessTask

ProcessTask オペレーションは、現在のイテレーター位置を使用して GetRecords を呼び出すことによりストリームからレコードを取得し、レコードプロセッサの processRecords 関数を起動します。

メトリクス 説明
KinesisDataFetcher.getRecords.Success

Kinesis data stream シャードあたりの GetRecords オペレーションの成功回数。

メトリクスレベル: Detailed

単位: Count

KinesisDataFetcher.getRecords.Time

Kinesis data stream シャードの GetRecords オペレーションにかかった時間。

メトリクスレベル: Detailed

単位: ミリ秒

UpdateLease.Success

指定されたシャードのレコードプロセッサによってチェックポイントが正常に作成された回数。

メトリクスレベル: Detailed

単位: Count

UpdateLease.Time

指定されたシャードの各チェックポイントオペレーションにかかった時間。

メトリクスレベル: Detailed

単位: ミリ秒

DataBytesProcessed

ProcessTask の各呼び出しで処理されたレコードのバイト単位の合計サイズ。

メトリクスレベル: Summary

単位: バイト

RecordsProcessed

ProcessTask の各呼び出しで処理されたレコード数。

メトリクスレベル: Summary

単位: Count

ExpiredIterator

GetRecords を呼び出したときに受信した ExpiredIteratorException の数。

メトリクスレベル: Summary

単位: Count

MillisBehindLatest 現在のイテレーターがシャード内の最新のレコード (先端) から遅れている時間。この値は、応答の最新レコードと現在時間における時間差と同じかそれ以下です。これは、最新の応答レコードのタイムスタンプを比較するよりも、シャードが先端からどれくらい離れているかを示すより正確な反映です。この値は、各レコードの全タイムスタンプの平均ではなく、レコードの最新バッチに適用されます。

メトリクスレベル: Summary

単位: ミリ秒

RecordProcessor.processRecords.Time

レコードプロセッサの processRecords メソッドにかかった時間。

メトリクスレベル: Summary

単位: ミリ秒

Success

プロセスタスクオペレーションの成功回数。

メトリクスレベル: Summary

単位: Count

時間

プロセスタスクオペレーションにかかった時間。

メトリクスレベル: Summary

単位: ミリ秒