Amazon による Kinesis Client Library のモニタリング CloudWatch - Amazon Kinesis Data Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon による Kinesis Client Library のモニタリング CloudWatch

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

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

メトリクスと名前空間

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

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

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

メトリクスレベル

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

有効なディメンション

すべての KCL メトリクスには、 にも送信されるディメンションが関連付けられています CloudWatch。KCL 2.x では、単一のデータストリームを処理するように KCL が設定されている場合、すべてのメトリクスディメンション (OperationShardId、およびWorkerIdentifier) が、デフォルトで有効になっています。また、KCL 2.x では、単一のデータストリームを処理するように KCL が設定されている場合、Operation ディメンションを無効にすることはできません。KCL 2.x では、KCL が複数のデータストリームを処理するように構成されている場合、すべてのメトリクスディメンション (OperationShardIdStreamId、およびWorkerIdentifier) は、デフォルトで有効になっています。また、KCL 2.x では、KCL が複数のデータストリームを処理するように設定されている場合、OperationStreamId ディメンションを無効にすることはできません。StreamIdディメンションは、シャードごとのメトリクスでのみ使用できます。

KCL 1.x では、デフォルトでは、Operation および ShardId ディメンションのみが有効であり、WorkerIdentifier ディメンションは無効となります。KCL 1.x では、Operation ディメンションを無効にすることはできません。

CloudWatch メトリクスディメンションの詳細については、「Amazon CloudWatch ユーザーガイドhttps://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#Dimension」の「Amazon CloudWatch 概念」トピックの「ディメンション」セクションを参照してください。

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

メトリクスの設定

メトリクスレベルと有効なディメンションは、KCL アプリケーションの起動時にワーカーに渡される KinesisClientLibConfiguration インスタンスを使用して設定できます。 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

単位: カウント

KinesisDataFetcher.getIterator.Time

指定された KCL アプリケーションの GetShardIterator オペレーションあたりの所要時間。

メトリクスレベル: Detailed

単位: ミリ秒

RecordProcessor.initialize.Time

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

メトリクスレベル: Summary

単位: ミリ秒

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

ShutdownTask

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

メトリクス 説明
CreateLease.成功

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

メトリクスレベル: Detailed

単位: カウント

CreateLease.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

UpdateLease.成功

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

メトリクスレベル: Detailed

単位: カウント

UpdateLease.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

RecordProcessor.shutdown.Time

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

メトリクスレベル: Summary

単位: ミリ秒

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

ShardSyncTask

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

メトリクス 説明
CreateLease.成功

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

メトリクスレベル: Detailed

単位: カウント

CreateLease.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

BlockOnParentTask

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

メトリクス 説明
成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

PeriodicShardSyncManager

PeriodicShardSyncManager は、KCL コンシューマーアプリケーションによって処理されているデータストリームを調べ、部分リースを持つデータストリームを特定し、同期のためにそれらを引き渡します。

次のメトリクスは、KCL が単一のデータストリームを処理するように設定されている場合 ( NumStreamsToSync と の値が 1 NumStreamsWithPartialLeases に設定されている場合)、および KCL が複数のデータストリームを処理するように設定されている場合に使用できます。

メトリクス 説明
NumStreamsToSync

部分リースを含み、同期のために引き渡す必要があるコンシューマーアプリケーションによって処理されるデータストリームの数 ( AWS アカウントあたり)。

メトリクスレベル: Summary

単位: カウント

NumStreamsWithPartialLeases

コンシューマーアプリケーションが処理している部分リースを含むデータストリームの数 ( AWS アカウントあたり)。

メトリクスレベル: Summary

単位: カウント

成功

回数 PeriodicShardSyncManager は、コンシューマーアプリケーションが処理しているデータストリーム内の部分リースを正常に識別できました。

メトリクスレベル: Summary

単位: カウント

時間

その時間の量 (ミリ秒) では、シャード同期が必要なデータストリームを特定するために、コンシューマーアプリケーションが処理しているデータストリームを調べます。

メトリクスレベル: Summary

単位: ミリ秒

MultistreamTracker

MultistreamTracker インターフェイスを使用すると、複数のデータストリームを同時に処理できる KCL コンシューマーアプリケーションを構築できます。

メトリクス 説明
DeletedStreams.Count

この期間に削除されたデータストリームの数。

メトリクスレベル: Summary

単位: カウント

ActiveStreams.Count

処理されているアクティブなデータストリームの数。

メトリクスレベル: Summary

単位: カウント

StreamsPendingDeletion.Count

FormerStreamsLeasesDeletionStrategy に基づいて削除が保留中のデータストリームの数。

メトリクスレベル: Summary

単位: カウント

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

これらのメトリクスは、Amazon EC2 インスタンスなど、Kinesis Data Streams のデータを消費するすべてのレコードプロセッサにわたって集約されます。

RenewAllLeases

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

メトリクス 説明
RenewLease.成功

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

メトリクスレベル: Detailed

単位: カウント

RenewLease.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

CurrentLeases

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

メトリクスレベル: Summary

単位: カウント

LostLeases

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

メトリクスレベル: Summary

単位: カウント

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

TakeLeases

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

メトリクス 説明
ListLeases.成功

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

メトリクスレベル: Detailed

単位: カウント

ListLeases.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

TakeLease.成功

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

メトリクスレベル: Detailed

単位: カウント

TakeLease.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

NumWorkers

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

メトリクスレベル: Summary

単位: カウント

NeededLeases

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

メトリクスレベル: Detailed

単位: カウント

LeasesToTake

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

メトリクスレベル: Detailed

単位: カウント

TakenLeases

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

メトリクスレベル: Summary

単位: カウント

TotalLeases

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

メトリクスレベル: Detailed

単位: カウント

ExpiredLeases

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

メトリクスレベル: Summary

単位: カウント

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

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

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

ProcessTask

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

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

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

メトリクスレベル: Detailed

単位: カウント

KinesisDataFetcher.getRecords.Time

Kinesis data stream シャードの GetRecords オペレーションあたりの所要時間。

メトリクスレベル: Detailed

単位: ミリ秒

UpdateLease.成功

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

メトリクスレベル: Detailed

単位: カウント

UpdateLease.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

DataBytesProcessed

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

メトリクスレベル: Summary

単位: バイト

RecordsProcessed

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

メトリクスレベル: Summary

単位: カウント

ExpiredIterator

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

メトリクスレベル: Summary

単位: カウント

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

メトリクスレベル: Summary

単位: ミリ秒

RecordProcessor.processRecords.Time

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

メトリクスレベル: Summary

単位: ミリ秒

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒