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

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

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

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

メトリクス、ディメンション、および名前空間

KPL の起動時にアプリケーション名を指定できます。これは、メトリクスをアップロードする際、名前空間の一部として使用されます。これはオプションであり、アプリケーション名を設定しない場合は、KPL によりデフォルト値が設定されます。

また、メトリクスに任意の追加ディメンションを追加するように KPL を設定できます。これは、より詳細なデータが CloudWatch メトリクスに必要な場合に便利です。たとえば、ディメンションとしてホスト名を追加でき、これによりフリート全体の均一でない負荷分散を特定できます。すべての KPL 設定は変更不可能なため、KPL インスタンスを初期化した後、これらの追加ディメンションは変更できません。

メトリクスレベルと詳細度

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

メトリクスレベル

これは、メトリクスの重要性を示すおおよその目安です。すべてのメトリクスにレベルが割り当てられます。レベルを設定すると、それより下のレベルのメトリクスは、CloudWatch に送信されません。このレベルとして、NONESUMMARYDETAILED があります。デフォルト設定は DETAILED であり、すべてのメトリクスが対象です。NONE はメトリクスが一切ないことを意味し、実際にはどのメトリクスもそのレベルに割り当てられません。

詳細度

これは、追加の詳細度レベルで同じメトリクスが出力されるかどうかを制御します。このレベルとして、GLOBALSTREAMSHARD があります。デフォルト設定は SHARD で、最も詳細なメトリクスが含まれます。

SHARD が選択されると、ストリーム名とシャード ID をディメンションとしてメトリクスが出力されます。また、同じメトリクスは、ストリーム名のディメンションのみを使用して出力されるため、そのメトリクスにはストリーム名がありません。つまり、ある特定のメトリクスについて、それぞれに 2 つのシャードがある 2 つのストリームから、7 つの CloudWatch メトリクスが生成されます。各シャードに 1 つ、各ストリームに 1 つ、全体に 1 つのメトリクスが生成され、これらはどれも同じ統計情報を記述していますが、詳細度のレベルは異なります。次の図は、これを説明するものです。

異なる詳細度から階層が形成され、システム内のすべてのメトリクスから、メトリクス名をルートとするツリーが構成されます。

MetricName (GLOBAL): Metric X Metric Y | | ----------------- ------------ | | | | StreamName (STREAM): Stream A Stream B Stream A Stream B | | -------- --------- | | | | ShardID (SHARD): Shard 0 Shard 1 Shard 0 Shard 1

すべてのメトリクスをシャードレベルで使用できるわけではありません。一部のメトリクスはストリームレベルまたは本質的にグローバルです。これらは、シャードレベルのメトリクスを有効にしても、シャードレベルで生成されません(上の図の Metric Y)。

追加のディメンションを指定すると、tuple:<DimensionName, DimensionValue, Granularity> に値を指定する必要があります。詳細度は、カスタムディメンションが階層のどこに挿入されたかを判断するのに使用されます。GLOBAL は、追加のディメンションがメトリクス名の後に挿入されたことを意味し、STREAM はストリーム名の後に、SHARD は ID シャードの後に挿入されたことをそれぞれ意味します。複数の追加ディメンションが詳細度レベルごとに指定された場合、それらは指定された順序で挿入されます。

ローカルアクセスと Amazon CloudWatch へのアップロード

現在の KPL インスタンスのメトリクスはローカルでリアルタイムに使用できるため、いつでも KPL でクエリを実行してそれらを取得できます。KPL では、CloudWatch の場合と同様に、すべてのメトリクスの合計、平均、最小値、最大値、および個数をローカルで計算します。

プログラムの開始から現在の時点までの累積として、または過去 N 秒間(N は 1 から 60 までの整数)のローリングウィンドウを使用して統計情報を取得できます。

すべてのメトリクスは、CloudWatch へのアップロードに使用することができます。これは、複数のホスト、モニタリング、およびアラームの間でデータを集約するのに特に役立ちます。この機能は、ローカルでは使用できません。

前に説明したように、メトリクスレベル詳細度の設定を使用してどのメトリクスをアップロードするかを選択できます。ローカルでメトリクスをアップロードしたり使用したりすることはできません。

データポイントを個別にアップロードするのは、高トラフィックの場合、毎秒数百万のアップロードが発生するためお勧めしません。そのため、KPL は、メトリクスをローカルで 1 分間のバケットに集約し、有効なメトリクスごとに 1 分あたり 1 回ずつ統計情報オブジェクトを CloudWatch にアップロードします。

メトリクスの一覧

メトリクス 説明
User Records Received

入力オペレーションで KPL コアにより受信された論理ユーザーレコードの数。シャードレベルでは使用できません。

メトリクスレベル: Detailed

単位: 個

User Records Pending

現在保留状態にあるユーザーレコード数の定期的なサンプリング。レコードが現在バッファ処理されていて送信待ちの場合、または、送信済みでバックエンドサービスで処理中の場合、そのレコードは保留状態です。シャードレベルでは使用できません。

KPL が提供する専用のメソッドを使用して、グローバルレベルでこのメトリクスを取得することで、お客様は PUT レートを管理できます。

メトリクスレベル: Detailed

単位: 個

User Records Put

入力に成功した論理ユーザーレコードの数。

このメトリクスの場合、KPL では、失敗したレコードがカウントされません。このため、平均が成功率に、個数が総試行回数に、個数と合計の差が失敗件数にそれぞれ対応します。

メトリクスレベル: Summary

単位: 個

User Records Data Put

入力に成功した論理ユーザーレコードのバイト数。

メトリクスレベル: Detailed

単位: バイト

Kinesis Records Put

入力に成功した Kinesis Data Streams レコードの数(各 Kinesis Data Streams レコードは、複数のユーザーレコードを含むことができます)。

KPL は、失敗したレコードに対してゼロを出力します。このため、平均が成功率に、個数が総試行回数に、個数と合計の差が失敗件数にそれぞれ対応します。

メトリクスレベル: Summary

単位: 個

Kinesis Records Data Put

Kinesis Data Streams レコードのバイト数。

メトリクスレベル: Detailed

単位: バイト

Errors by Code

各種類のエラーコードの数。これにより、StreamNameShardId などの通常のディメンションに加え、ディメンション ErrorCode が追加されます。シャードに対して、すべてのエラーを追跡することはできません。追跡できないエラーは、ストリームレベルまたはグローバルレベルでのみ出力されます。このメトリクスは、スロットリング、シャードマッピングの変更、内部エラー、サービス使用不可、タイムアウトなどに関する情報をとらえます。

Kinesis Data Streams API のエラーは、Kinesis Data Streams レコードごとに 1 回カウントされます。Kinesis Data Streams レコード内の複数のユーザーレコードで複数回のカウントが生じることはありません。

メトリクスレベル: Summary

単位: 個

All Errors

これは、同じエラーによって Errors by Code としてトリガーされますが、エラーの種類は区別されません。異なる種類のすべてのエラーから件数の合計を手計算する必要がなくなるため、これはエラー率の総合的なモニタリングに役立ちます。

メトリクスレベル: Summary

単位: 個

Retries per Record

ユーザーレコードあたりの再試行の実行回数。1 回の試行でレコードが成功した場合は、ゼロが出力されます。

ユーザーレコードが終了すると(成功した場合またはそれ以上再試行されない場合)、直ちにデータが出力されます。レコードの有効期限値が大きいと、このメトリクスの出力が大幅に遅延する場合があります。

メトリクスレベル: Detailed

単位: 個

Buffering Time

ユーザーレコードが KPL に到着してからバックエンドに送信されるまでの時間。この情報は、レコード単位でユーザーに返されますが、集約された統計情報としても使用できます。

メトリクスレベル: Summary

単位: ミリ秒

Request Time

PutRecordsRequests の実行にかかる時間。

メトリクスレベル: Detailed

単位: ミリ秒

User Records per Kinesis Record

単一の Kinesis Data Streams レコードに集約された論理ユーザーレコードの数。

メトリクスレベル: Detailed

単位: 個

Amazon Kinesis Records per PutRecordsRequest

単一の PutRecordsRequest に集約された Kinesis Data Streams レコードの数。シャードレベルでは使用できません。

メトリクスレベル: Detailed

単位: 個

User Records per PutRecordsRequest

PutRecordsRequest に含まれているユーザーレコードの総数。これは、前の 2 つのメトリクスの積にほぼ一致します。シャードレベルでは使用できません。

メトリクスレベル: Detailed

単位: 個