Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

DynamoDB メトリクスとディメンション

DynamoDB を操作するとき、以下のメトリクスとディメンションが CloudWatch に送信されます。以下の手順を使用して、DynamoDB のメトリクスを表示できます。

メトリクスを表示するには (コンソール)

メトリクスはまずサービスの名前空間ごとにグループ化され、次に各名前空間内のさまざまなディメンションの組み合わせごとにグループ化されます。

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで メトリクスを選択します。

  3. [DynamoDB] 名前空間を選択します。

メトリクスを表示するには (CLI)

  • コマンドプロンプトで、次のコマンドを使用します。

    aws cloudwatch list-metrics --namespace "AWS/DynamoDB"

CloudWatch は DynamoDB に関する以下のメトリクスを表示します。

DynamoDB のディメンションおよびメトリクス

DynamoDB が Amazon CloudWatch に送信するメトリクスおよびディメンションを以下に示します。

DynamoDB メトリクス

注記

Amazon CloudWatch は 1 分間隔で次の DynamoDB メトリクスを集計します。

  • ConditionalCheckFailedRequests

  • ConsumedReadCapacityUnits

  • ConsumedWriteCapacityUnits

  • ReadThrottleEvents

  • ReturnedBytes

  • ReturnedItemCount

  • ReturnedRecordsCount

  • SuccessfulRequestLatency

  • SystemErrors

  • TimeToLiveDeletedItemCount

  • ThrottledRequests

  • TransactionConflict

  • UserErrors

  • WriteThrottleEvents

他のすべての DynamoDB メトリクスについて、集計の詳細度は 5 分です。

AverageSum など、すべての統計が必ずしも常にすべてのメトリクスに適用可能であるとは限りません。ただし、これらの値はすべて Amazon DynamoDB コンソール経由で利用できます。または CloudWatch コンソール、AWS CLI、AWS SDK を使用してすべてのメトリクスを利用できます。次の表は、各メトリクスに適用可能な有効な統計のリストを示します。

メトリクス 説明
ConditionalCheckFailedRequests

条件付き書き込みに失敗した回数。PutItemUpdateItem、および DeleteItem オペレーションは、オペレーションの実行前に true と評価される必要のある理論条件の提供を可能にします。この条件が false と評価された場合、ConditionalCheckFailedRequests は 1 ずつ増加します。

注記

条件付き書き込みが失敗すると、HTTP 400 エラー (Bad Request) が発生します。これらのイベントは、ConditionalCheckFailedRequests メトリクスに反映されますが、UserErrors メトリクスには反映されません。

単位: Count

ディメンション: TableName

有効な統計:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

ConsumedReadCapacityUnits

指定の期間内に消費された読み取り容量ユニットの数。これにより、どれだけのプロビジョンドスループットが使用されたかをトラックすることができます。テーブル、すべてのグローバルセカンダリインデックス、または特定のグローバルセカンダリインデックスで消費された読み取り容量の合計を取得できます。詳細については、「読み込み/書き込みキャパシティーモード」を参照してください。

注記

Sum の統計を使用して、使用したスループットを算出します。たとえば、1 分間の Sum の値を取得し、1 分間の秒数 (60) で除算して、1 秒あたりの平均 ConsumedReadCapacityUnits を算出します (この平均によって、その 1 分間に発生した読み込みアクティビティでの、大幅であっても短い急増は明らかになりません)。その算出した値を DynamoDB に指定したプロビジョンドスループットの値と比較できます。

単位: Count

ディメンション: TableName, GlobalSecondaryIndexName

有効な統計:

  • Minimum – テーブルまたはインデックスへの個別のリクエストによって消費される読み込みキャパシティーユニットの最小数。

  • Maximum – テーブルまたはインデックスへの個別のリクエストによって消費される読み込みキャパシティーユニットの最大数。

  • Average – 消費されたリクエストごとの平均読み込みキャパシティー。

    注記

    Average 値は、サンプル値がゼロになるアイドル状態の期間によって影響を受けます。

  • Sum – 消費された合計読み込みキャパシティーユニット数。これは ConsumedReadCapacityUnits メトリクスで最も有用な統計です。

  • SampleCount – DynamoDB へのリクエスト数 (読み込みキャパシティーを消費していない場合でも関係ありません)。

    注記

    SampleCount 値は、サンプル値がゼロになるアイドル状態の期間によって影響を受けます。

ConsumedWriteCapacityUnits

指定の期間内に消費された書き込み容量ユニットの数。これにより、どれだけのプロビジョンドスループットが使用されたかをトラックすることができます。テーブル、すべてのグローバルセカンダリインデックス、または特定のグローバルセカンダリインデックスで消費された書き込み容量の合計を取得できます。詳細については、「読み込み/書き込みキャパシティーモード」を参照してください。

注記

Sum の統計を使用して、使用したスループットを算出します。たとえば、1 分間の Sum の値を取得し、1 分間の秒数 (60) で除算して、1 秒あたりの平均 ConsumedWriteCapacityUnits を算出します (この平均によって、その 1 分間に発生した書き込みアクティビティでの、大幅であっても短い急増は明らかになりません)。その算出した値を DynamoDB に指定したプロビジョンドスループットの値と比較できます。

単位: Count

ディメンション: TableName, GlobalSecondaryIndexName

有効な統計:

  • Minimum – テーブルまたはインデックスへの個別のリクエストによって消費される書き込みキャパシティーユニットの最小数。

  • Maximum – テーブルまたはインデックスへの個別のリクエストによって消費される書き込みキャパシティーユニットの最大数。

  • Average – 消費されたリクエストごとの平均書き込みキャパシティー。

    注記

    Average 値は、サンプル値がゼロになるアイドル状態の期間によって影響を受けます。

  • Sum – 消費された合計書き込みキャパシティーユニット数。これは ConsumedWriteCapacityUnits メトリクスで最も有用な統計です。

  • SampleCount – DynamoDB へのリクエスト数 (書き込みキャパシティーを消費していない場合でも関係ありません)。

    注記

    SampleCount 値は、サンプル値がゼロになるアイドル状態の期間によって影響を受けます。

OnlineIndexConsumedWriteCapacity

新しいグローバルセカンダリインデックスがテーブルに追加される際に消費された書き込み容量ユニットの数。インデックスの書き込み容量が小さすぎる場合、バックフィルフェーズ中の受信書き込みアクティビティは調整される可能性があります。これによりインデックスの作成にかかる時間が長くなる場合があります。インデックスの書き込み容量がプロビジョニング不足かどうかを判断するには、インデックスの構築中に、この統計を監視する必要があります。

インデックスの構築中であっても、UpdateTable 操作を使用して、インデックスの書き込み容量を調整することができます。

インデックスの作成中に消費された書き込みスループットは、インデックスの ConsumedWriteCapacityUnits メトリクスに含まれません。

単位: Count

ディメンション: TableName, GlobalSecondaryIndexName

有効な統計:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

OnlineIndexPercentageProgress

新しいグローバルセカンダリインデックスがテーブルに追加されている場合の完了率 (%)。DynamoDB は、最初に新しいインデックスにリソースを割り当て、次に表からインデックスに属性を埋め戻す必要があります。大きなテーブルの場合、このプロセスに長時間かかる場合があります。DynamoDB によるインデックスの構築時に相対的な進捗状況を確認するには、この統計を監視する必要があります。

単位: Count

ディメンション: TableName, GlobalSecondaryIndexName

有効な統計:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

OnlineIndexThrottleEvents

新しいグローバルセカンダリインデックスがテーブルに追加される際に発生した書き込み調整イベントの数。これらのイベントの発生は、インデックス作成の完了に長い時間がかかることを示しています。受信書き込みアクティビティが、インデックスに対してプロビジョニングされた書き込みスループットを超えているためです。

インデックスの構築中であっても、UpdateTable 操作を使用して、インデックスの書き込み容量を調整することができます。

インデックスの作成中に発生した調整イベントは、インデックスの WriteThrottleEvents メトリクスに含まれません。

単位: Count

ディメンション: TableName, GlobalSecondaryIndexName

有効な統計:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

PendingReplicationCount

(このメトリクスは DynamoDB グローバルテーブル用です。) 1 つのレプリカテーブルに書き込まれるが、グローバルテーブルの他のレプリカにはまだ書き込まれていない項目の更新数。

単位: Count

ディメンション: TableName, ReceivingRegion

有効な統計:

  • Average

  • Sample Count

  • Sum

ProvisionedReadCapacityUnits

テーブルまたはグローバルセカンダリインデックスのプロビジョニングされた読み取り容量ユニットの数。

TableName ディメンションは、任意のグローバルセカンダリインデックスではなく、テーブルの ProvisionedReadCapacityUnits を返します。グローバルセカンダリインデックスの ProvisionedReadCapacityUnits を表示するには、TableNameGlobalSecondaryIndex の両方を指定する必要があります。

単位: Count

ディメンション: TableName, GlobalSecondaryIndexName

有効な統計:

  • Minimum – プロビジョニングされた読み込みキャパシティーの最も低い設定。UpdateTable を使用して読み込みキャパシティーを引き上げる場合、このメトリクスは、この期間中にプロビジョニングされた ReadCapacityUnits の最も低い値を示します。

  • Maximum – プロビジョニングされた読み込みキャパシティーの最も高い設定。UpdateTable を使用して読み込みキャパシティーを引き下げる場合、このメトリクスは、この期間中にプロビジョニングされた ReadCapacityUnits の最も高い値を示します。

  • Average – プロビジョニングされた平均読み込みキャパシティー。ProvisionedReadCapacityUnits メトリクスは 5 分間隔でパブリッシュされます。そのため、プロビジョニングされた読み込みキャパシティーユニットを急速に調整すると、この統計には正しい平均が反映されない場合があります。

ProvisionedWriteCapacityUnits

テーブルまたはグローバルセカンダリインデックスのプロビジョニングされた書き込みキャパシティーユニットの数。

TableName ディメンションは、任意のグローバルセカンダリインデックスではなく、テーブルの ProvisionedWriteCapacityUnits を返します。グローバルセカンダリインデックスの ProvisionedWriteCapacityUnits を表示するには、TableNameGlobalSecondaryIndex の両方を指定する必要があります。

単位: Count

ディメンション: TableName, GlobalSecondaryIndexName

有効な統計:

  • Minimum – プロビジョニングされた書き込みキャパシティーの最も低い設定。UpdateTable を使用して書き込みキャパシティーを引き上げる場合、このメトリクスは、この期間中にプロビジョニングされた WriteCapacityUnits の最も低い値を示します。

  • Maximum – プロビジョニングされた書き込みキャパシティーの最も高い設定。UpdateTable を使用して書き込みキャパシティーを引き下げる場合、このメトリクスは、この期間中にプロビジョニングされた WriteCapacityUnits の最も高い値を示します。

  • Average – プロビジョニングされた平均書き込みキャパシティー。ProvisionedWriteCapacityUnits メトリクスは 5 分間隔でパブリッシュされます。そのため、プロビジョニングされた書き込みキャパシティーユニットを急速に調整すると、この統計には正しい平均が反映されない場合があります。

ReadThrottleEvents

テーブルまたはグローバルセカンダリインデックスのプロビジョニングされた読み取り容量ユニットを超える DynamoDB へのリクエスト。

1 つの リクエストで複数のイベントが発生する場合があります。たとえば、10 個の項目を読み取る BatchGetItem は、10 個の GetItem イベントとして処理されます。イベントが抑制されると、そのイベントの ReadThrottleEvents は 1 ずつ増加します。10 個すべての GetItem イベントが抑制された場合を除き、BatchGetItem 全体の ThrottledRequests メトリックスは増加しません。

TableName ディメンションは、任意のグローバルセカンダリインデックスではなく、テーブルの ReadThrottleEvents を返します。グローバルセカンダリインデックスの ReadThrottleEvents を表示するには、TableNameGlobalSecondaryIndex の両方を指定する必要があります。

単位: Count

ディメンション: TableName, GlobalSecondaryIndexName

有効な統計:

  • SampleCount

  • Sum

ReplicationLatency

(このメトリクスは DynamoDB グローバルテーブル用です。) 1 つのレプリカテーブルに対して DynamoDB ストリームに表示される更新された項目と、グローバルテーブルの別のレプリカに表示される、その項目の間の経過時間。

単位: Milliseconds

ディメンション: TableName, ReceivingRegion

有効な統計:

  • Average

  • Minimum

  • Maximum

ReturnedBytes

指定された期間中に GetRecords オペレーション (DynamoDB ストリーム) で返されたバイト数。

単位: Bytes

ディメンション: Operation, StreamLabel, TableName

有効な統計:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

ReturnedItemCount

指定された期間中に Query または Scan オペレーションで返された項目の数。

返された項目の数は、評価された項目の数と必ずしも同じではありません。たとえば、100 個の項目が存在していたテーブルで Scan をリクエストしたが、結果を絞り込む FilterExpression を指定したため、15 個の項目のみが返されたとします。この場合、Scan からのレスポンスには、ScanCount として 100 個、Count として 15 個の返された項目が含まれます。

単位: Count

ディメンション: TableName, Operation

有効な統計:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

ReturnedRecordsCount

指定された期間中に、GetRecords オペレーション (DynamoDB ストリーム) で返されたストリームレコードの数。

単位: Count

ディメンション: Operation, StreamLabel, TableName

有効な統計:

  • Minimum

  • Maximum

  • Average

  • SampleCount

  • Sum

SuccessfulRequestLatency

指定された期間中に DynamoDB または DynamoDB ストリームに対して成功したリクエスト。SuccessfulRequestLatency は、2 種類の情報を提供できます。

  • 成功したリクエストの経過時間 (MinimumMaximumSum、またはAverage)。

  • 成功したリクエストの数 (SampleCount)。

SuccessfulRequestLatency は DynamoDB または DynamoDB ストリーム 内のアクティビティのみを反映し、アカウントのネットワークレイテンシーまたはクライアント側のアクティビティは考慮されません。

単位: Milliseconds

ディメンション: TableName, Operation

有効な統計:

  • Minimum

  • Maximum

  • Average

  • SampleCount

SystemErrors

指定された期間中に HTTP 500 ステータスコードを生成する、DynamoDB または DynamoDB ストリームへのリクエスト。通常、HTTP 500 は内部サービスエラーを示します。

単位: Count

ディメンション: すべてのディメンション

有効な統計:

  • Sum

  • SampleCount

TimeToLiveDeletedItemCount

指定した期間中に有効期限 (TTL、Time To Live) で削除された項目の数。このメトリクスにより、テーブルでの TTL による削除のレートをモニタリングできます。

単位: Count

ディメンション: TableName

有効な統計:

  • Sum

ThrottledRequests

リソース (テーブルやインデックスなど) でプロビジョニングされたスループットの上限を超える、DynamoDB へのリクエスト。

リクエスト内で任意のイベントがプロビジョンドスループットの制限を超過した場合、ThrottledRequests は 1 ずつ増加します。たとえば、グローバルセカンダリインデックスを持つテーブルの項目を更新する場合、テーブルへの書き込みと、各インデックスへの書き込みという複数のイベントが発生します。1 つ以上のイベントが抑制されると、ThrottledRequests が 1 ずつ増加します。

注記

バッチリクエスト (BatchGetItem または BatchWriteItem) では、バッチ内のすべてのリクエストが調整されている場合にのみ ThrottledRequests が増加します。

バッチ内の個別のリクエストが調整されている場合、次のいずれかのメトリクスが増加します。

  • ReadThrottleEventsBatchGetItem 内の調整された GetItem イベント用。

  • WriteThrottleEventsBatchWriteItem 内の調整された PutItemDeleteItem イベント用。

どのイベントがリクエストを抑制しているかを確認するには、ThrottledRequests と、そのテーブルとインデックスの ReadThrottleEventsWriteThrottleEvents を比較してください。

注記

調整されたリクエストでは、HTTP 400 ステータスコードになります。これらのすべてのイベントは、ThrottledRequests メトリクスに反映されますが、UserErrors メトリクスには反映されません。

単位: Count

ディメンション: TableName, Operation

有効な統計:

  • Sum

  • SampleCount

TransactionConflict

同じ項目に対する同時リクエスト間のトランザクション競合が原因で拒否された項目レベルのリクエスト。詳細については、「DynamoDB でのトランザクション競合の処理」を参照してください。

単位: Count

ディメンション: TableName

有効な統計:

  • Sum – トランザクション競合が原因で拒否された項目レベルのリクエストの数。

    注記

    TransactWriteItems または TransactGetItems の呼び出しで項目レベルの複数のリクエストが拒否された場合、Sum は項目レベルの PutUpdateDelete、または Get リクエストごとに 1 ずつ増加します。

  • SampleCount – トランザクション競合が原因で拒否されたリクエストの数。

    注記

    TransactWriteItems または TransactGetItems の呼び出しで項目レベルの複数のリクエストが拒否された場合、SampleCount は 1 だけ増加します。

  • MinTransactWriteItemsTransactGetItemsPutItemUpdateItem、または DeleteItem の呼び出しで拒否された項目レベルのリクエストの最小数。

  • MaxTransactWriteItemsTransactGetItemsPutItemUpdateItem、または DeleteItem の呼び出しで拒否された項目レベルのリクエストの最大数。

  • AverageTransactWriteItemsTransactGetItemsPutItemUpdateItem、または DeleteItem の呼び出しで拒否された項目レベルのリクエストの平均数。

UserErrors

指定された期間中に HTTP 400 ステータスコードを生成する、DynamoDB または DynamoDB ストリーム へのリクエスト。通常、HTTP 400 は、パラメータの無効な組み合わせ、存在しないテーブルの更新の試み、不正なリクエスト署名などのクライアント側エラーを示します。

このようなイベントは、以下を除き、UserErrors メトリクスにすべて反映されます。

  • ProvisionedThroughputExceededException – このセクションの ThrottledRequests メトリクスを参照してください。

  • ConditionalCheckFailedException – このセクションの ConditionalCheckFailedRequests メトリクスを参照してください。

UserErrors は、現在の AWS リージョンおよび現在の AWS アカウントへの DynamoDB または DynamoDB ストリームリクエストに関する HTTP 400 エラーの集計を表します。

単位: Count

有効な統計:

  • Sum

  • SampleCount

WriteThrottleEvents

テーブルまたはグローバルセカンダリインデックスのプロビジョニングされた書き込み容量ユニットを超える DynamoDB へのリクエスト。

1 つの リクエストで複数のイベントが発生する場合があります。たとえば、3 つの任意のグローバルセカンダリインデックスを持つテーブルの PutItem リクエストから、テーブルへの書き込みと、3 つのインデックスへの書き込みという 4 つのイベントが発生します。イベントが調整されると、そのイベントの WriteThrottleEvents メトリクスは 1 ずつ増加します。いずれかのイベントが調整された場合には、各 PutItem リクエストにおいて ThrottledRequests も 1 ずつ増加します。BatchWriteItem においては、すべての ThrottledRequests あるいは BatchWriteItem イベントが抑制された場合を除いて、全体の PutItemDeleteItem メトリクスは増加しません。

TableName ディメンションは、任意のグローバルセカンダリインデックスではなく、テーブルの WriteThrottleEvents を返します。グローバルセカンダリインデックスの WriteThrottleEvents を表示するには、TableNameGlobalSecondaryIndex の両方を指定する必要があります。

単位: Count

ディメンション: TableName, GlobalSecondaryIndexName

有効な統計:

  • Sum

  • SampleCount

DynamoDB メトリクスのディメンション

DynamoDB のメトリクスは、アカウント、テーブル名、グローバルセカンダリインデックス名、オペレーションの値で修飾されます。CloudWatch コンソールを使用して、DynamoDB データ、および以下の表に示すいずれかのディメンションを取得できます。

ディメンション 説明
GlobalSecondaryIndexName

このディメンションは、テーブルのグローバルセカンダリインデックスにデータを制限します。GlobalSecondaryIndexName を指定する場合は、TableName も指定する必要があります。

Operation

このディメンションは、次のいずれかの DynamoDB オペレーションにデータを制限します。

  • PutItem

  • DeleteItem

  • UpdateItem

  • GetItem

  • BatchGetItem

  • Scan

  • Query

  • BatchWriteItem

さらに、次の DynamoDB ストリーム オペレーションにデータを制限できます。

  • GetRecords

ReceivingRegion

このディメンションは、特定の AWS リージョンにデータを制限します。これは DynamoDB グローバルテーブル内のレプリカテーブルから送信されるメトリクスで使用されます。

StreamLabel

このディメンションは、特定のストリームラベルにデータを制限します。これは、DynamoDB ストリーム GetRecords オペレーションによるメトリクスで使用します。

TableName

このディメンションは、特定のテーブルにデータを制限します。この値は、現在のリージョンおよび現在の AWS アカウントの任意のテーブル名とすることができます。