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

CloudWatch によって にアップロードされたメトリクスにはわずかな料金がかかりますKCL。具体的には、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) がデフォルトで有効になります。また、2.x KCL では、 KCL が単一のデータストリームを処理するように設定されている場合、Operationディメンションを無効にすることはできません。KCL 2.x では、 KCLが複数のデータストリームを処理するように設定されている場合、すべてのメトリクスディメンション (Operation、、StreamId、および ShardIdWorkerIdentifier) がデフォルトで有効になります。また、2.x KCL では、 KCLが複数のデータストリームを処理するように設定されている場合、 Operationおよび StreamIdディメンションを無効にすることはできません。 StreamId 分割はシャードごとのメトリクスでのみ使用できます。

KCL 1.x では、 Operationディメンションと ShardIdディメンションのみがデフォルトで有効になり、 WorkerIdentifierディメンションは無効になります。1.x KCL では、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または の 3 つの値のいずれかを割り当てることができますDETAILED。有効なディメンション値は、 CloudWatch メトリクスに使用できるディメンションのリストを含むカンマ区切りの文字列である必要があります。KCL アプリケーションで使用されるディメンションはOperation、、ShardId、および ですWorkerIdentifier

メトリクスの一覧

次の表に、スコープとオペレーション別にグループ化されたKCLメトリクスを示します。

アプリケーションKCLごとのメトリクス

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

InitializeTask

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

メトリクス 説明
KinesisDataFetcher.getIterator.成功

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

メトリクスレベル: Detailed

単位: カウント

KinesisDataFetcher.getIterator.時間

特定の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 データストリームのシャード情報の変更を検出するため、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 データストリームのデータを使用するすべてのレコードプロセッサで集計されます。

RenewAllLeases

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

メトリクス 説明
RenewLease.成功

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

メトリクスレベル: Detailed

単位: カウント

RenewLease.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

CurrentLeases

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

メトリクスレベル: Summary

単位: カウント

LostLeases

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

メトリクスレベル: Summary

単位: カウント

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

TakeLeases

TakeLeases オペレーションは、すべてのKCLワーカー間でレコード処理のバランスを取ります。現在のKCLワーカーのシャードリースが要求よりも少ない場合、オーバーロードされている別のワーカーからシャードリースを取得します。

メトリクス 説明
ListLeases.成功

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

メトリクスレベル: Detailed

単位: カウント

ListLeases.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

TakeLease.成功

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

メトリクスレベル: Detailed

単位: カウント

TakeLease.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

NumWorkers

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

メトリクスレベル: Summary

単位: カウント

NeededLeases

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

メトリクスレベル: Detailed

単位: カウント

LeasesToTake

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

メトリクスレベル: Detailed

単位: カウント

TakenLeases

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

メトリクスレベル: Summary

単位: カウント

TotalLeases

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

メトリクスレベル: Detailed

単位: カウント

ExpiredLeases

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

メトリクスレベル: Summary

単位: カウント

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

シャードごとのメトリクス

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

ProcessTask

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

メトリクス 説明
KinesisDataFetcher.getRecords.成功

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

メトリクスレベル: Detailed

単位: カウント

KinesisDataFetcher.getRecords.時間

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

メトリクスレベル: Detailed

単位: ミリ秒

UpdateLease.成功

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

メトリクスレベル: Detailed

単位: カウント

UpdateLease.Time

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

メトリクスレベル: Detailed

単位: ミリ秒

DataBytesProcessed

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

メトリクスレベル: Summary

単位: バイト

RecordsProcessed

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

メトリクスレベル: Summary

単位: カウント

ExpiredIterator

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

メトリクスレベル: Summary

単位: カウント

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

メトリクスレベル: Summary

単位: ミリ秒

RecordProcessor.processRecords.時間

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

メトリクスレベル: Summary

単位: ミリ秒

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒