翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon で Kinesis クライアントライブラリをモニタリングする CloudWatch
Amazon KinesisKinesis Data Streams の Kinesis Client Library (KCL) は、KCLアプリケーションの名前を名前空間として使用して、ユーザーに代わってカスタム Amazon CloudWatch メトリクスを発行します。これらのメトリクスを表示するには、CloudWatch コンソール
CloudWatch によって にアップロードされたメトリクスにはわずかな料金が発生しますKCL。特に、Amazon CloudWatch Custom Metrics と Amazon CloudWatch API Requests の料金が適用されます。詳細については、「Amazon CloudWatch 料金
メトリクスと名前空間
メトリクスのアップロードに使用される名前空間は、 の起動時に指定したアプリケーション名ですKCL。
メトリクスレベルとディメンション
にアップロードされるメトリクスを制御するには、次の 2 つのオプションがあります CloudWatch。
- メトリクスレベル
-
すべてのメトリクスに、個別のレベルが割り当てられます。メトリクスレポートレベルを設定すると、個々のレベルがレポートレベルを下回るメトリクスは に送信されません CloudWatch。このレベルとして、
NONE
、SUMMARY
、DETAILED
があります。デフォルト設定はDETAILED
です。つまり、すべてのメトリクスが に送信されます CloudWatch。レポートレベルNONE
は、メトリクスがまったく送信されないことを意味します。各メトリクスに割り当てられるメトリクスの詳細については、メトリクスの一覧を参照してください。 - 有効なディメンション
-
すべてのKCLメトリクスには、 にも送信されるディメンションが関連付けられています CloudWatch。KCL 2.x では、 KCLが単一のデータストリームを処理するように設定されている場合、すべてのメトリクスディメンション (
Operation
、ShardId
、およびWorkerIdentifier
) がデフォルトで有効になります。また、2.x KCL では、 KCL が単一のデータストリームを処理するように設定されている場合、Operation
ディメンションを無効にすることはできません。KCL 2.x では、 KCLが複数のデータストリームを処理するように設定されている場合、すべてのメトリクスディメンション (Operation
、ShardId
StreamId
、、およびWorkerIdentifier
) がデフォルトで有効になります。また、2.x KCL では、 KCLが複数のデータストリームを処理するように設定されている場合、Operation
とStreamId
ディメンションを無効にすることはできません。StreamId
ディメンションはシャード単位のメトリクスでのみ使用できます。KCL 1.x では、
Operation
とShardId
ディメンションのみがデフォルトで有効になり、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 単位: ミリ秒 |
時間 |
メトリクスレベル: Summary 単位: ミリ秒 |
成功 |
メトリクスレベル: Summary 単位: カウント |
ForceLeaderRelease |
リース割り当てマネージャーが連続して 3 回失敗し、リーダーワーカーがリーダーシップを解放していることを示します。 メトリクスレベル: Summary 単位: カウント |
NumWorkersWithInvalidEntry |
無効と見なされるワーカーメトリクスエントリの数。 メトリクスレベル: Summary 単位: カウント |
NumWorkersWithFailingWorkerMetric |
ワーカーメトリクスの値の 1 つとして -1 (ワーカーメトリクス値を表すものは利用できません) を持つワーカーメトリクスエントリの数。 メトリクスレベル: Summary 単位: カウント |
LeaseDeserializationFailureCount |
リーステーブルからのリースエントリで、シリアル化解除に失敗したもの。 メトリクスレベル: Summary 単位: カウント |
InitializeTask
InitializeTask
オペレーションは、KCLアプリケーションのレコードプロセッサの初期化を担当します。このオペレーションのロジックには、Kinesis Data Streams からのシャードイテレーターの取得とレコードプロセッサの初期化が含まれています。
メトリクス | 説明 |
---|---|
KinesisDataFetcher.getIterator.成功 |
KCL アプリケーションあたりの成功した メトリクスレベル: Detailed 単位: カウント |
KinesisDataFetcher.getIterator.時間 |
特定のKCLアプリケーションの メトリクスレベル: 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 単位: カウント |
成功 |
回数 メトリクスレベル: Summary 単位: カウント |
時間 |
シャード同期を必要とするデータストリームを決定するために、コンシューマーアプリケーションが処理しているデータストリームを が検査するのに メトリクスレベル: Summary 単位: ミリ秒 |
MultistreamTracker
MultistreamTracker
インターフェイスを使用すると、複数のデータストリームを同時に処理できるKCLコンシューマーアプリケーションを構築できます。
メトリクス | 説明 |
---|---|
DeletedStreams.Count |
この期間に削除されたデータストリームの数。 メトリクスレベル: Summary 単位: カウント |
ActiveStreams.Count |
処理されているアクティブなデータストリームの数。 メトリクスレベル: Summary 単位: カウント |
StreamsPendingDeletion.Count |
メトリクスレベル: Summary 単位: カウント |
ワーカーあたりのメトリクス
これらのメトリクスは、Amazon EC2インスタンスなどの Kinesis データストリームからデータを使用するすべてのレコードプロセッサで集約されます。
WorkerMetricStatsReporter
WorkerMetricStatReporter
オペレーションは、現在のワーカーのメトリクスを定期的にワーカーメトリクステーブルに発行する責任があります。これらのメトリクスは、リース割り当てを実行するために LeaseAssignmentManager
オペレーションによって使用されます。
メトリクス | 説明 |
---|---|
InMemoryMetricStatsReporterFailure |
一部のワーカーメトリクスの失敗による、メモリ内のワーカーメトリクス値のキャプチャに失敗した数。 メトリクスレベル: Summary 単位: カウント |
WorkerMetricStatsReporter.Time |
メトリクスレベル: Summary 単位: ミリ秒 |
WorkerMetricStatsReporter.成功 |
メトリクスレベル: Summary 単位: カウント |
LeaseDiscovery
LeaseDiscovery
オペレーションは、LeaseAssignmentManager
オペレーションによって現在のワーカーに割り当てられた新しいリースを特定する責任があります。このオペレーションのロジックでは、リーステーブルのグローバルセカンダリインデックスを読み取ることで、現在のワーカーに割り当てられたリースを識別します。
メトリクス | 説明 |
---|---|
ListLeaseKeysForWorker.時刻 |
リーステーブルのグローバルセカンダリインデックスを呼び出し、現在のワーカーに割り当てられたリースキーを取得する時間。 メトリクスレベル: Detailed 単位: ミリ秒 |
FetchNewLeases.Time |
リーステーブルからすべての新しいリースを取得する時間。 メトリクスレベル: Detailed 単位: ミリ秒 |
NewLeasesDiscovered |
ワーカーに割り当てられた新しいリースの合計数。 メトリクスレベル: Detailed 単位: カウント |
時間 |
メトリクスレベル: Summary 単位: ミリ秒 |
成功 |
メトリクスレベル: 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 単位: カウント |
成功 |
メトリクスレベル: Summary 単位: カウント |
時間 |
ワーカーの メトリクスレベル: Summary 単位: ミリ秒 |
シャードあたりのメトリクス
これらのメトリクスは、単一のレコードプロセッサについて集約されます。
ProcessTask
ProcessTask
オペレーションは、現在のイテレータ位置GetRecordsで を呼び出してストリームからレコードを取得し、レコードプロセッサprocessRecords
関数を呼び出します。
メトリクス | 説明 |
---|---|
KinesisDataFetcher.getRecords.成功 |
Kinesis data stream シャードあたりの メトリクスレベル: Detailed 単位: カウント |
KinesisDataFetcher.getRecords.時間 |
Kinesis data stream シャードの メトリクスレベル: Detailed 単位: ミリ秒 |
UpdateLease.成功 |
指定されたシャードのレコードプロセッサによってチェックポイントが正常に作成された回数。 メトリクスレベル: Detailed 単位: カウント |
UpdateLease.Time |
指定されたシャードの各チェックポイントオペレーションにかかった時間。 メトリクスレベル: Detailed 単位: ミリ秒 |
DataBytesProcessed |
メトリクスレベル: Summary 単位: バイト |
RecordsProcessed |
メトリクスレベル: Summary 単位: カウント |
ExpiredIterator |
を呼び出すときに ExpiredIteratorException 受信した の数 メトリクスレベル: Summary 単位: カウント |
MillisBehindLatest | 現在のイテレーターがシャード内の最新のレコード (先端) から遅れている時間。この値は、応答の最新レコードと現在時間における時間差と同じかそれ以下です。これは、最後のレスポンスレコードのタイムスタンプを比較するよりも、シャードが先端からどのくらい離れているかをより正確に反映したものです。この値は、各レコードのすべてのタイムスタンプの平均ではなく、レコードの最新バッチに適用されます。 メトリクスレベル: Summary 単位: ミリ秒 |
RecordProcessor.processRecords.時間 |
レコードプロセッサの メトリクスレベル: Summary 単位: ミリ秒 |
成功 |
プロセスタスクオペレーションの成功回数。 メトリクスレベル: Summary 単位: カウント |
時間 |
プロセスタスクオペレーションにかかった時間。 メトリクスレベル: Summary 単位: ミリ秒 |