Amazon で Kinesis クライアントライブラリをモニタリングする CloudWatch - Amazon Kinesis Data Streams

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

Amazon で Kinesis クライアントライブラリをモニタリングする 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が複数のデータストリームを処理するように設定されている場合、すべてのメトリクスディメンション (OperationShardIdStreamId、、および WorkerIdentifier) がデフォルトで有効になります。また、2.x KCL では、 KCLが複数のデータストリームを処理するように設定されている場合、 OperationStreamIdディメンションを無効にすることはできません。StreamIdディメンションはシャード単位のメトリクスでのみ使用できます。

KCL 1.x では、 OperationShardIdディメンションのみがデフォルトで有効になり、WorkerIdentifierディメンションは無効になります。1.x KCL では、Operationディメンションを無効にできません。

CloudWatch メトリクスディメンションの詳細については、「Amazon ユーザーガイド」の「Amazon Concepts トピック」の「ディメンション」セクションを参照してください。 CloudWatch 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メトリクスを示します。

Per-KCL-application メトリクス

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

LeaseAssignmentManager

このLeaseAssignmentManagerオペレーションは、ワーカーにリースを割り当て、ワーカー間のリースのバランスを再調整して、ワーカーリソースを均等に活用する責任があります。このオペレーションのロジックには、リーステーブルからリース関連のメタデータを読み取ることと、ワーカーメトリクステーブルからメトリクスを読み取ることと、リース割り当てを実行することが含まれます。

メトリクス 説明

LeaseAndWorkerMetricsLoad.Time

3.x KCL で導入された新しいリース割り当てと負荷分散アルゴリズムであるリース割り当てマネージャー (LAM) のすべてのリースとワーカーメトリクスエントリをロードするのに要した時間。

メトリクスレベル: Detailed

単位: ミリ秒

TotalLeases

現在のKCLアプリケーションのリースの合計数。

メトリクスレベル: Summary

単位: カウント

NumWorkers

現在のKCLアプリケーションのワーカーの合計数。

メトリクスレベル: Summary

単位: カウント

AssignExpiredOrUnassignedLeases.Time

期限切れリースのメモリ内割り当てを実行する時間。

メトリクスレベル: Detailed

単位: ミリ秒

LeaseSpillover

ワーカーあたりの最大リース数または最大スループットの上限に達したために割り当てられなかったリースの数。

メトリクスレベル: Summary

単位: カウント

BalanceWorkerVariance.Time

ワーカー間のリースのインメモリバランシングを実行する時間。

メトリクスレベル: Detailed

単位: ミリ秒

NumOfLeasesReassignment

現在の再割り当て反復で行われたリース再割り当ての合計数。

メトリクスレベル: Summary

単位: カウント

FailedAssignmentCount

DynamoDB リーステーブルへの AssignLease 呼び出しの失敗の数。

メトリクスレベル: Detailed

単位: カウント

ParallelyAssignLeases.Time

DynamoDB リーステーブルに新しい割り当てをフラッシュする時間。

メトリクスレベル: Detailed

単位: ミリ秒

ParallelyAssignLeases.成功

新しい割り当ての正常なフラッシュの数。

メトリクスレベル: Detailed

単位: カウント

TotalStaleWorkerMetricsEntry

クリーンアップする必要があるワーカーメトリクスエントリの合計数。

メトリクスレベル: Detailed

単位: カウント

StaleWorkerMetricsCleanup.Time

DynamoDB ワーカーメトリクステーブルからワーカーメトリクスエントリを削除する時間。

メトリクスレベル: Detailed

単位: ミリ秒

時間

LeaseAssignmentManager オペレーションにかかる時間。

メトリクスレベル: Summary

単位: ミリ秒

成功

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

メトリクスレベル: Summary

単位: カウント

ForceLeaderRelease

リース割り当てマネージャーが連続して 3 回失敗し、リーダーワーカーがリーダーシップを解放していることを示します。

メトリクスレベル: Summary

単位: カウント

NumWorkersWithInvalidEntry

無効と見なされるワーカーメトリクスエントリの数。

メトリクスレベル: Summary

単位: カウント

NumWorkersWithFailingWorkerMetric

ワーカーメトリクスの値の 1 つとして -1 (ワーカーメトリクス値を表すものは利用できません) を持つワーカーメトリクスエントリの数。

メトリクスレベル: Summary

単位: カウント

LeaseDeserializationFailureCount

リーステーブルからのリースエントリで、シリアル化解除に失敗したもの。

メトリクスレベル: Summary

単位: カウント

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.時間

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

メトリクスレベル: Detailed

単位: ミリ秒

UpdateLease.成功

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

メトリクスレベル: Detailed

単位: カウント

UpdateLease.時間

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

メトリクスレベル: Detailed

単位: ミリ秒

RecordProcessor.shutdown.Time

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

メトリクスレベル: Summary

単位: ミリ秒

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

ShardSyncTask

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

メトリクス 説明
CreateLease.成功

KCL アプリケーション DynamoDB テーブルに新しいシャード情報を追加しようとした回数。

メトリクスレベル: Detailed

単位: カウント

CreateLease.時間

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

メトリクスレベル: Detailed

単位: ミリ秒

成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

BlockOnParentTask

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

メトリクス 説明
成功

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

メトリクスレベル: Summary

単位: カウント

時間

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

メトリクスレベル: Summary

単位: ミリ秒

PeriodicShardSyncManager

PeriodicShardSyncManager は、KCLコンシューマーアプリケーションによって処理されるデータストリームを検査し、部分リースのデータストリームを特定し、同期のために引き渡す責任があります。

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

メトリクス 説明
NumStreamsToSync

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

メトリクスレベル: Summary

単位: カウント

NumStreamsWithPartialLeases

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

メトリクスレベル: Summary

単位: カウント

成功

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

メトリクスレベル: Summary

単位: カウント

時間

シャード同期を必要とするデータストリームを決定するために、コンシューマーアプリケーションが処理しているデータストリームを が検査するのにPeriodicShardSyncManagerかかる時間 (ミリ秒単位)。

メトリクスレベル: Summary

単位: ミリ秒

MultistreamTracker

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

メトリクス 説明
DeletedStreams.Count

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

メトリクスレベル: Summary

単位: カウント

ActiveStreams.Count

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

メトリクスレベル: Summary

単位: カウント

StreamsPendingDeletion.Count

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

メトリクスレベル: Summary

単位: カウント

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

これらのメトリクスは、Amazon EC2インスタンスなどの Kinesis データストリームからデータを使用するすべてのレコードプロセッサで集約されます。

WorkerMetricStatsReporter

WorkerMetricStatReporter オペレーションは、現在のワーカーのメトリクスを定期的にワーカーメトリクステーブルに発行する責任があります。これらのメトリクスは、リース割り当てを実行するために LeaseAssignmentManagerオペレーションによって使用されます。

メトリクス 説明

InMemoryMetricStatsReporterFailure

一部のワーカーメトリクスの失敗による、メモリ内のワーカーメトリクス値のキャプチャに失敗した数。

メトリクスレベル: Summary

単位: カウント

WorkerMetricStatsReporter.Time

WorkerMetricsStats オペレーションにかかる時間。

メトリクスレベル: Summary

単位: ミリ秒

WorkerMetricStatsReporter.成功

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

メトリクスレベル: Summary

単位: カウント

LeaseDiscovery

LeaseDiscovery オペレーションは、LeaseAssignmentManagerオペレーションによって現在のワーカーに割り当てられた新しいリースを特定する責任があります。このオペレーションのロジックでは、リーステーブルのグローバルセカンダリインデックスを読み取ることで、現在のワーカーに割り当てられたリースを識別します。

メトリクス 説明

ListLeaseKeysForWorker.時刻

リーステーブルのグローバルセカンダリインデックスを呼び出し、現在のワーカーに割り当てられたリースキーを取得する時間。

メトリクスレベル: Detailed

単位: ミリ秒

FetchNewLeases.Time

リーステーブルからすべての新しいリースを取得する時間。

メトリクスレベル: Detailed

単位: ミリ秒

NewLeasesDiscovered

ワーカーに割り当てられた新しいリースの合計数。

メトリクスレベル: Detailed

単位: カウント

時間

LeaseDiscovery オペレーションにかかる時間。

メトリクスレベル: Summary

単位: ミリ秒

成功

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

メトリクスレベル: Summary

単位: カウント

OwnerMismatch

GSI レスポンステーブルとリーステーブルの一貫した読み取りからの所有者の不一致の数。

メトリクスレベル: Detailed

単位: カウント

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

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

単位: ミリ秒