

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

# Performance Insights を使用したモニタリング
<a name="performance-insights"></a>

Performance Insights は、既存の Amazon DocumentDB モニタリング機能を拡張して、クラスターのパフォーマンスを明確にし、これに影響を与えるあらゆる問題を分析しやすくします。Performance Insights ダッシュボードを使用してデータベースロードを視覚化したり、ロードを待機、クエリステートメント、ホスト、アプリケーションでフィルタリングしたりできます。

**注記**  
Performance Insights は、Amazon DocumentDB 3.6、4.0、5.0、および 8.0 インスタンスベースのクラスターでのみ使用できます。

**これはどのように役立ちますか?**
+ データベースのパフォーマンスを視覚化: ロードを視覚化して、データベースのロードがいつどこにあるかを判断します
+ データベースのロードの原因を特定: インスタンスのロードの原因となっているクエリ、ホスト、アプリケーションを特定します
+ データベースにロードがかかるタイミングを特定: Performance Insights ダッシュボードを拡大して特定のイベントに注目したり、縮小して長期間にわたる傾向を確認したりできます
+ データベースロードに関するアラート: CloudWatch から新しいデータベースロードメトリクスに自動的にアクセスし、DB ロードメトリクスを他の Amazon DocumentDB メトリクスと一緒にモニタリングし、アラートを設定できます

**Amazon DocumentDB Performance Insights にはどのような制限がありますか?**
+  AWS GovCloud (米国東部) および AWS GovCloud (米国西部) リージョンの Performance Insights は利用できません
+ Amazon DocumentDB の パフォーマンスインサイトが保持するパフォーマンスデータは 7 日間までとなります
+ 1,024 バイトを超えるクエリは Performance Insights に集約されません

**Topics**
+ [Performance Insights の概要](performance-insights-concepts.md)
+ [Performance Insights の有効化と無効化](performance-insights-enabling.md)
+ [Performance Insights 用のアクセスポリシーの設定](performance-insights-policies.md)
+ [Performance Insights ダッシュボードを使用してメトリクスを分析する](performance-insights-analyzing.md)
+ [Performance Insights API によるメトリクスの取得](performance-insights-metrics.md)
+ [Performance Insights の Amazon CloudWatch メトリクス](performance-insights-cloudwatch.md)
+ [カウンターメトリクス用の Performance Insights](performance-insights-counter-metrics.md)

# Performance Insights の概要
<a name="performance-insights-concepts"></a>

**Topics**
+ [平均アクティブセッション](#performance-insights-concepts-sessions)
+ [ディメンション](#performance-insights-concepts-dimensions)
+ [最大 vCPU](#performance-insights-concepts-maxvcpu)

## 平均アクティブセッション
<a name="performance-insights-concepts-sessions"></a>

データベース内のデータベースロード (DB ロード)アクティビティのレベルを測定します。毎秒収集されるPerformance Insights のキーメトリクスは `DB Load` です。`DBLoad` メトリクスの単位は、Amazon DocumentDB インスタンスの*平均アクティブセッション数 (AAS)*です。

*アクティブな*セッションとは、Amazon DocumentDB インスタンスにワークロードを送信し、レスポンスを待っている状態の接続です。例えば、Amazon DocumentDB インスタンスにクエリを送信すると、インスタンスでのクエリの処理中は、そのデータベースセッションは「アクティブな」状態となります。

平均アクティブセッションを取得するために、Performance Insights は、クエリを同時に実行するセッションの数をサンプリングします。AAS は、セッションの総数をサンプルの総数で割った値です。次の表は、実行中のクエリの連続する 5 つのサンプルを示しています。


| 例 | クエリを実行しているセッション数 | AAS | 計算 | 
| --- | --- | --- | --- | 
|  1  |  2  |  2  |  2 セッション/1 サンプル  | 
|  2  |  0  |  1  |  2 セッション/2 サンプル  | 
|  3  |  4  |  2  |  6 セッション/3 サンプル  | 
|  4  |  0  |  1.5  |  6 セッション/4 サンプル  | 
|  5  |  4  |  2  |  10 セッション/5 サンプル  | 

前の例では、1～5 の時間間隔の DB ロードは 2 AAS です。DB ロードの増加は、データベースで実行されているセッションが平均して増えることを意味します。

## ディメンション
<a name="performance-insights-concepts-dimensions"></a>

この `DB Load` メトリクスは、ディメンションと呼ばれるサブコンポーネントに分割できるため、他の時系列メトリクスとは異なります。ディメンションは、`DB Load` メトリクスのさまざまな特性のカテゴリと考えることができます。パフォーマンスの問題を診断する場合、最も有用なディメンションは**待機状態**と**上位のクエリ**です。

**待機状態**  
*待機状態* を指定すると、クエリステートメントは、特定のイベントが発生するまで待機してから、実行を継続できます。例えば、クエリステートメントは、ロック済みのリソースのロックが解除されるまで待機することがあります。`DB Load` と待機イベントを組み合わせると、セッションの状態の全体像を得ることができます。Amazon DocumentDB には次のようなさまざまな待機状態があります。


| Amazon DocumentDB の待機状態 | 待機状態の説明 | 
| --- | --- | 
|  ラッチ  |  ラッチ待機状態は、セッションがバッファープールのページングを待っているときに発生します。システムによる大規模なクエリの処理やコレクションのスキャンが頻繁に行われる場合や、バッファープールが小さすぎてワーキングセットを処理できない場合に、バッファープールのページインとページアウトが頻繁に起こる可能性があります。  | 
| CPU |  CPU 待機状態は、セッションが CPU 上で待機しているときに発生します。  | 
|  CollectionLock  |  CollectionLock 待機状態は、セッションがコレクションのロック取得を待機中の場合に発生します。これらのイベントは、コレクションに対して DDL 操作が行われたときに発生します。  | 
| DocumentLock |  DocumentLock 待機状態は、セッションがドキュメントのロック取得を待機中の場合に発生します。同じドキュメントへの同時書き込みの数が多いと、そのドキュメントの DocumentLock 待機状態が増えます。  | 
|  SystemLock  |  SystemLock 待機状態は、セッションがシステムで待機しているときに発生します。これは、実行時間の長いクエリ、実行時間の長いトランザクション、またはシステムの高い同時実行性が頻繁に場合に発生する可能性があります。  | 
|  IO  |  IO 待機状態は、セッションが IO の完了を待っているときに発生します。  | 
|  BufferLock  |  BufferLock 待機状態は、セッションがバッファーの共有ページのロック取得を待機中の場合に発生します。BufferLock 待機状態は、他のプロセスが要求されたページのオープンカーソルを保持していると、長くなる可能性があります。  | 
|  LowMemThrottle  |  LowMemThrottle 待機状態は、Amazon DocumentDB インスタンスに大量のメモリロードがかかってセッションが待機しているときに発生します。この状態が長時間続く場合は、インスタンスをスケールアップしてメモリを追加することを検討してください。詳細については、「[リソースガバナー](https://docs.aws.amazon.com/documentdb/latest/developerguide/how-it-works.html)」を参照してください。  | 
|  BackgroundActivity  |  BackgroundActivity 待機状態は、セッションが内部システムプロセスを待機しているときに発生します。  | 
|  その他  |  その他の待機状態は内部待機状態です。この状態が長時間続く場合は、このクエリを終了することを検討してください。詳細については、「[長時間実行されているクエリやブロックされているクエリを見つけて終了する方法](https://docs.aws.amazon.com/documentdb/latest/developerguide/user_diagnostics.html#user_diagnostics-query_terminating.html)」を参照してください。  | 

**上位のクエリ**  
待機状態はボトルネックを示しますが、上位のクエリは、どのクエリが DB ロードの最も大きな原因になっているかを示します。例えば、多くのクエリが現在データベースで実行されている可能性がありますが、1 つのクエリが DB ロードの 99% を占めている可能性もあります。この場合、ロードが高いと、クエリに問題がある可能性があります。

## 最大 vCPU
<a name="performance-insights-concepts-maxvcpu"></a>

ダッシュボードの [**データベースロード**] グラフで、セッション情報が収集、集計、表示されます。アクティブなセッションが最大 CPU 容量を超えているかどうかを確認するには、**最大 vCPU** ラインとの関係を調べます。**最大 vCPU** 値は、お使いの Amazon DocumentDB インスタンスの vCPU (仮想 CPU) のコア数によって決まります。

DB ロードが [**Max vCPU (最大 vCPU)**] ラインをしばしば超過し、プライマリ待機状態が CPU である場合、CPU が過ロードになっています。この場合、インスタンスへの接続を抑制したり、CPU ロードの高いクエリを調整したり、より大きなインスタンスクラスを検討する必要があります。待機状態の高い一貫したインスタンスは、解決するボトルネックまたはリソースの競合問題がある可能性があることを示します。これは、DB ロードが**最大 vCPU** ラインを超えていない場合にも該当します。

# Performance Insights の有効化と無効化
<a name="performance-insights-enabling"></a>

Performance Insights を使用するには、DB インスタンスで有効にします。必要に応じて、後で無効にすることができます。Performance Insights を有効または無効にしても、ダウンタイム、再起動、フェイルオーバーが発生することはありません。

Performance Insights エージェントは DB ホストの限られた CPU とメモリを消費します。DB のロードが高い場合、エージェントはデータ収集の頻度を下げることでパフォーマンスへの影響を抑えます。

## クラスター作成時の Performance Insights の有効化
<a name="performance-insights-enabling-create-instance"></a>

コンソールでは、新しい DB インスタンスを作成または変更するときに、Performance Insights を有効または無効にすることができます。

### の使用 AWS マネジメントコンソール
<a name="create-instance-console"></a>

Amazon DocumentDB クラスターを作成する際に、コンソール上でパフォーマンスインサイトを有効にすることができます。新しい Amazon DocumentDB クラスターを作成する際に、**[パフォーマンスインサイト]** セクションの **[パフォーマンスインサイトを有効化する]** を選択することで、パフォーマンスインサイトを有効化できます。

**コンソールでの手順**

1. クラスターを作成する手順については、「[Amazon DocumentDB クラスターの作成](https://docs.aws.amazon.com/documentdb/latest/developerguide/db-cluster-create.html)」を参照してください。

1. [Performance Insights] セクションで、**[Performance Insights の有効化]** を選択します。  
![\[[パフォーマンスインサイト] セクションで、[パフォーマンスインサイトを有効にする] を選択します。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/select-performance-insights.png)
**注記**  
Performance Insights データ保持期間は 7 日間です。

   ** AWS KMS key** — AWS KMS キーを指定します。Performance Insights は、 AWS KMS キーを使用してすべての機密データを暗号化します。データは、転送中と不使用時のいずれも暗号化されます。詳細については、「Performance Insights の AWS AWS KMS ポリシーの設定」を参照してください。

## インスタンス変更時の有効化と無効化
<a name="performance-insights-enabling-modify-instance"></a>

コンソールまたは AWS CLIを使用し、DB インスタンスを変更して Performance Insights を有効にできます。

------
#### [ Using the AWS マネジメントコンソール ]

**コンソールでの手順**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb) で Amazon DocumentDB コンソールを開きます。

1. **[クラスター]** を選択します。

1. DB インスタンスを選択し、[**変更**] を選択します。

1. [Performance Insights] セクションで、**[Performance Insights の有効化]** または **[Performance Insightsの無効化]** を選択します。
**注記**  
**Performance Insights を有効にする**を選択した場合は、 AWS AWS KMS キーを指定できます。Performance Insights は、 AWS KMS キーを使用してすべての機密データを暗号化します。データは、転送中と不使用時のいずれも暗号化されます。詳細については、「[保管中の Amazon DocumentDB データの暗号化](https://docs.aws.amazon.com/documentdb/latest/developerguide/encryption-at-rest.html)」を参照してください。

1. [**続行**] をクリックしてください。

1. [**Scheduling of Modifications**] で、[**Apply immediately**] を選択します。「**次にスケジュールされたメンテナンスウィンドウで適用**」 を選択すると、インスタンスではこの設定が無視され、Performance Insights が直ちに有効になります。

1. [**インスタンスの変更**] を選択します。

------
#### [ Using the AWS CLI ]

`create-db-instance` または `modify-db-instance` AWS AWS CLI コマンドを使用する場合、 を指定して Performance Insights を有効にするか`--enable-performance-insights`、 を指定して無効にすることができます`--no-enable-performance-insights`。

次の手順で、 AWS AWS CLIを使用して DB インスタンスで Performance Insights を有効化または無効化する方法を説明します。



**AWS AWS CLI 手順**

`modify-db-instance` AWS AWS CLI コマンドを呼び出し、次の値を指定します。
+ `--db-instance-identifer` ​- DB インスタンスの名前
+ 有効にする場合は `--enable-performance-insights`、無効にする場合は `--no-enable-performance-insights`

**Example**  
次の例では、`sample-db-instance` の Performance Insights を有効にします。  

```
aws docdb modify-db-instance \
    --db-instance-identifier sample-db-instance \
    --enable-performance-insights
```

```
aws docdb modify-db-instance ^
    --db-instance-identifier sample-db-instance ^
    --enable-performance-insights
```

------

# Performance Insights 用のアクセスポリシーの設定
<a name="performance-insights-policies"></a>

Performance Insights にアクセスするには、 AWS Identity and Access Management (IAM) から適切なアクセス許可を得る必要があります。アクセス権の付与については、次のオプションがあります。
+ `AmazonRDSPerformanceInsightsReadOnly` マネージドポリシーをアクセス許可セットまたはロールにアタッチします。
+ カスタム IAM ポリシーを作成し、アクセス許可セットまたはロールにアタッチします。

また、Performance Insights を有効にしたときにカスタマーマネージドキーを指定した場合は、アカウント内のユーザーが KMS キーに対する `kms:Decrypt` および `kms:GenerateDataKey` アクセス許可を持っていることを確認します。

**注記**  
 AWS KMS キーによるencryption-at-restとセキュリティグループ管理のために、Amazon DocumentDB は [Amazon RDS](https://aws.amazon.com/rds) と共有されている運用テクノロジーを活用します。

## AmazonRDSPerformanceInsightsReadOnly ポリシーの IAM プリンシパルへのアタッチ
<a name="USER_PerfInsights.access-control.IAM-principal"></a>

`AmazonRDSPerformanceInsightsReadOnly` は、Amazon DocumentDB Performance Insights API のすべての読み取り専用オペレーションへのアクセスを許可する AWSマネージドポリシーです。現在、この API のすべてのオペレーションは読み取り専用です。`AmazonRDSPerformanceInsightsReadOnly` をアクセス許可セットまたはロールにアタッチすると、受取人は他のコンソール機能とともに Performance Insights を使用できます。

## Performance Insights 用のカスタム IAM ポリシーの作成
<a name="USER_PerfInsights.access-control.custom-policy"></a>

`AmazonRDSPerformanceInsightsReadOnly` ポリシーを持たないユーザーの場合は、ユーザーマネージド IAM ポリシーを作成または変更して、Performance Insights に対するアクセス権限を付与できます。ポリシーをアクセス許可セットまたはロールにアタッチすると、受取人は Performance Insights を使用できます。

**カスタムポリシーを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、**ポリシー** を選択してください。

1. **[Create policy]** (ポリシーの作成) を選択します。

1. [**ポリシーの作成**] ページで、[JSON] タブを選択します。

1. 次のテキストをコピーして貼り付け、*us-east-1* を AWS リージョンの名前に置き換え、*111122223333* をカスタマーアカウント番号に置き換えます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "rds:DescribeDBInstances",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "rds:DescribeDBClusters",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "pi:DescribeDimensionKeys",
               "Resource": "arn:aws:pi:us-east-1:111122223333:metrics/rds/*"
           },
           {
               "Effect": "Allow",
               "Action": "pi:GetDimensionKeyDetails",
               "Resource": "arn:aws:pi:us-east-1:111122223333:metrics/rds/*"
           },
           {
               "Effect": "Allow",
               "Action": "pi:GetResourceMetadata",
               "Resource": "arn:aws:pi:us-east-1:111122223333:metrics/rds/*"
           },
           {
               "Effect": "Allow",
               "Action": "pi:GetResourceMetrics",
               "Resource": "arn:aws:pi:us-east-1:111122223333:metrics/rds/*"
           },
           {
               "Effect": "Allow",
               "Action": "pi:ListAvailableResourceDimensions",
               "Resource": "arn:aws:pi:us-east-1:111122223333:metrics/rds/*"
           },
           {
               "Effect": "Allow",
               "Action": "pi:ListAvailableResourceMetrics",
               "Resource": "arn:aws:pi:us-east-1:111122223333:metrics/rds/*"
           }
       ]
   }
   ```

------

1. **[ポリシーの確認]** を選択します。

1. ポリシーの名前と (必要に応じて) 説明を入力し、[**ポリシーの作成**] を選択します。

これで、そのポリシーをアクセス許可セットまたはロールにアタッチできます。次の手順では、この目的で使用できるユーザーが既に存在することを前提としています。

**ポリシーをユーザーにアタッチするには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで [**ユーザー**] を選択します。

1. リストから存在するユーザーを 1 人選択します。
**重要**  
Performance Insights を使用するには、カスタムポリシーのほかに別のポリシーで、Amazon DocumentDB へのアクセスを許可されている必要があります。たとえば、事前定義された **AmazonDocDBReadOnlyAccess** ポリシーは Amazon DocDB への読み取り専用アクセスを許可します。詳細については、「[ポリシーを使用したアクセスの管理](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.html#security_iam_access-manage)」を参照してください。

1. [**Summary (概要)**] ページで、[**Add permissions (許可の追加)**] を選択します。

1. [**既存のポリシーを直接アタッチする**] を選択します。**検索**を行う場合は、次のようにポリシー名の初期の数文字を入力します。  
![\[ポリシーの選択\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/pi-add-permissions.png)

1. ポリシーを選択し、[**次へ: レビュー**] を選択します。

1. [**アクセス権限の追加**] を選択します。

## Performance Insights の AWS KMS ポリシーの設定
<a name="USER_PerfInsights.access-control.cmk-policy"></a>

Performance Insights は、 を使用して機密データ AWS KMS key を暗号化します。API またはコンソールを通じて Performance Insights を有効にする場合は、次のオプションを使用できます。
+ デフォルトを選択します AWS マネージドキー。

  Amazon DocumentDB は、新しい DB インスタンス AWS マネージドキー に を使用します。Amazon DocumentDB は、 AWS アカウントの AWS マネージドキー を作成します。 AWS アカウントは、 AWS リージョンごとに AWS マネージドキー Amazon DocumentDB で異なります。
+ カスタマーマネージドキーを選択します。

  カスタマーマネージドキーを指定する場合、Performance Insights API を呼び出すアカウント内のユーザーは、KMS キーに対する `kms:Decrypt` および `kms:GenerateDataKey` アクセス許可が必要です。IAM ポリシーを使用して、これらのアクセス許可を設定できます。ただし、KMS キーポリシーを使用してこれらのアクセス許可を管理することをお勧めします。詳細については、[AWS KMS でのキーポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)を参照してください。

**Example**  
次のサンプルキーポリシーでは、KMS キーポリシーにステートメントを追加する方法が示されています。これらのステートメントは、Performance Insights へのアクセスを許可します。の使用方法によっては AWS KMS、いくつかの制限を変更することもできます。ポリシーにステートメントを追加する前に、すべてのコメントを削除してください。

# Performance Insights ダッシュボードを使用してメトリクスを分析する
<a name="performance-insights-analyzing"></a>

Performance Insights ダッシュボードには、パフォーマンスの問題を分析し、解決するのに役立つ、データベースのパフォーマンス情報が含まれます。ダッシュボードのメインページで、データベースロード (DB ロード) に関する情報を確認できます。待機状態やクエリなどのディメンションによって、DB のロードを「スライス」することが可能です。

**Topics**
+ [Performance Insights ダッシュボードの概要](performance-insights-dashboard-overview.md)
+ [Performance Insights ダッシュボードを開く](performance-insights-dashboard-opening.md)
+ [待機状態によるデータベースロードの分析](performance-insights-analyzing-db-load.md)
+ [[上位のクエリ] タブの概要](performance-insights-top-queries.md)
+ [データベースロードグラフのズームイン](performance-insights-zoom-db-load.md)

# Performance Insights ダッシュボードの概要
<a name="performance-insights-dashboard-overview"></a>

ダッシュボードは、Performance Insights を操作する最も簡単な方法です。次の例では、Amazon DocumentDB インスタンスのダッシュボードを示しています。デフォルトでは、Performance Insights ダッシュボードには過去 60 分間のデータが表示されます。

![\[Amazon DocumentDB インスタンスの CPU 使用率と時間の経過に伴うデータベース負荷を示す [パフォーマンスインサイト] ダッシュボード。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/overview-dashboard.png)


このダッシュボードは、以下の各パートに分割されています。

1. **カウンターメトリクス** - 特定のパフォーマンスカウンターメトリクスのデータを示します。

1. **データベースロード** - DB ロードと DB インスタンスの容量を比較して、**最大 vCPU** ラインで表します。

1.  **上位ディメンション** – DB ロードに影響が大きい上位ディメンションを表示します。これらのディメンションには `waits`、`queries`、`hosts`、`databases`、`applications` が含まれます。

**Topics**
+ [カウンターメトリクスグラフ](#performance-insights-overview-metrics)
+ [データベースロードのグラフ](#performance-insights-overview-db-load-chart)
+ [上位のディメンションテーブル](#performance-insights-overview-top-dimensions)

## カウンターメトリクスグラフ
<a name="performance-insights-overview-metrics"></a>

カウンターメトリクスを使用すると、Performance Insights ダッシュボードをカスタマイズして最大 10 個の追加グラフを含めることができます。これらのグラフは、数十種類のオペレーティングシステムメトリクスの一部を示しています。この情報をデータベースロードと関連付けることで、パフォーマンスの問題を特定して分析できます。

**カウンターメトリクス**グラフはパフォーマンスカウンターのデータを表示します。

![\[時間の経過に伴う CPU 使用率を示すカウンターメトリクスグラフ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/counter-metrics.png)


**メトリクスの管理**を選択して、パフォーマンスカウンターを変更します。以下のスクリーンショットに示すように、複数の **OS メトリクス**を選択できます。メトリクスの詳細を表示するには、メトリクス名にカーソルを合わせます。

![\[OS メトリクスオプションを備えた [パフォーマンスインサイト] ダッシュボードメトリクス選択インターフェイス。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/overview-os-metrics.png)


## データベースロードのグラフ
<a name="performance-insights-overview-db-load-chart"></a>

**データベースロード**は、データベースアクティビティとインスタンス容量の比較結果が **最大 vCPU** の折れ線グラフとして表示されます。デフォルトでは、折れ線グラフは DB ロードを単位時間あたりの平均アクティブセッションで表します。DB ロードは、待機状態でスライス (グループ化) されます。

![\[CPU 使用率は最後に急増した、時間の経過に伴う平均アクティブセッション数を示すデータベース負荷グラフ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/database-load.png)


**ディメンションでスライスされた DB のロード**  
サポートされているディメンション別にグループ化された、アクティブなセッションとしてロードを表示するように選択できます。次の図に、Amazon DocumentDB インスタンスのディメンションを示します。

![\[ドロップダウンリストに表示されるさまざまな「スライスバイ」オプションを含むデータベース負荷を示すグラフ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/database-load-sliced.png)


**ディメンション項目に関する DB ロードの詳細**  
ディメンション内の DB ロード項目の詳細を表示するには、項目名にカーソルを合わせます。次の図は、クエリステートメントの詳細を示しています。

![\[項目名にカーソルを合わせてデータベースの負荷と追加の詳細を示す棒グラフ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/database-load-details.png)


凡例で選択した期間に対する項目の詳細を表示するには、その項目にカーソルを合わせます。

![\[バーにカーソルを合わせてデータベースの負荷と追加の詳細を示す棒グラフ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/database-load-hover.png)


## 上位のディメンションテーブル
<a name="performance-insights-overview-top-dimensions"></a>

**上位ディメンションテーブル**は、DB ロードを異なる次元でスライスします。ディメンションとは、DB ロードの異なる特性についてのカテゴリまたは「スライス化」のことです。ディメンションがクエリの場合、**上位のクエリ**は、DB ロードに最も寄与しているクエリステートメントを表示します。

以下のディメンションタブのいずれかを選択します。

![\[上位 2 つのクエリを示す上位クエリディメンションタブ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/top-dimensions.png)


次の表では、各タブの簡単な説明を示します。


| タブ | 説明 | 
| --- | --- | 
|  上位待機  |   データベースバックエンドが待っているイベント  | 
|  上位のクエリ  |  現在実行中のクエリステートメント  | 
|  上位ホスト  |  接続されているクライアントのホスト IP  | 
|  上位データベース  |  プロキシが接続しているデータベースユーザーの名前  | 
|  上位アプリケーション  |  データベースに接続されたアプリケーションの名前。  | 

**[上位のクエリ]** タブを使用してクエリを分析する方法については、「[[上位のクエリ] タブの概要](performance-insights-top-queries.md)」を参照してください。

# Performance Insights ダッシュボードを開く
<a name="performance-insights-dashboard-opening"></a>

**AWS マネジメントコンソールで Performance Insights ダッシュボードを表示するには、次の手順を実行します。**

1. [https://console.aws.amazon.com/docdb/](https://console.aws.amazon.com/docdb/home#performance-insights) で Performance Insights コンソールを開きます。

1. DB インスタンスを選択します。その Amazon DocumentDB インスタンスの Performance Insights ダッシュボードが表示されます。

   Performance Insights を有効にした Amazon DocumentDB インスタンスでは、インスタンスのリストで **[セッション]** 項目を選択してダッシュボードにアクセスすることもできます。[**現在のアクティビティ**] の [**セッション**] 項目には、直近 5 分間におけるアクティブなセッションの平均データベースロードが表示されます。ロードはバーでグラフィカルに示されます。バーが空の場合、インスタンスはアイドル状態です。ロードが増加すると、バーが青色で塗りつぶされます。ロードがインスタンスクラスの仮想 CPU (vCPU) の数を超えると、バーが赤色になり、ボトルネックとなる可能性があることが示されます。  
![\[Amazon DocumentDB リージョンクラスターと、各クラスターインスタンスの CPU と現在のアクティビティを示すクラスターページ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/opening-clusters.png)

1. (オプション) 右上のボタンを選択して、別の時間間隔を選択します。例えば、間隔を 1 時間に変更するには、**[1 時間]** を選択します。  
![\[5 分から 1 週間の範囲の時間間隔ボタン。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/opening-time.png)

   以下のスクリーンショットでは、DB ロードの間隔は 1 時間です。  
![\[平均アクティブセッションで測定されたデータベース負荷を示す棒グラフ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/opening-db-load.png)

1. データを自動的に更新するには、**[自動更新]** を有効にします。  
![\[時間間隔ボタンの横に表示される、有効化された自動更新ボタン。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/opening-auto-refresh.png)

   Performance Insights ダッシュボードが自動的に新しいデータで更新されます。更新の頻度は、表示されるデータの量によって異なります。
   + 「5 分」は 5 秒ごとに更新されます。
   + 「1 時間」は 1 分ごとに更新されます。
   + 「5 時間」は 1 分ごとに更新されます。
   + 「24 時間」は 5 分ごとに更新されます。
   + 「1 週間」は 1 時間ごとに更新されます。

# 待機状態によるデータベースロードの分析
<a name="performance-insights-analyzing-db-load"></a>

**データベースロード (DB ロード)** のグラフにボトルネックが表示される場合、ロードの発生源を確認できます。これを実行するには、**データベースロード**グラフ下にある[上位ロード項目] テーブルを参照してください。クエリやアプリケーションのような特定の項目を選択すると、その項目をドリルダウンして詳細を表示できます。

待機および上位クエリによってグループ分けされた DB ロードは、通常、パフォーマンス問題に関する最も正しい情報を提供します。待機でグループ化された DB ロードは、データベースにリソースまたは同時のボトルネックがあるかどうかを示します。この場合、上位ロード項目のテーブルの **[上位のクエリ]** タブには、どのクエリがそのロードをかけているかが表示されます。

パフォーマンスの問題を診断するための一般的なワークフローは次のとおりです。

1. 「**データベースロード**」 グラフを確認し、**最大 CPU** ラインを超えているデータベースロードのインシデントがあるかどうかを確認します。

1. ある場合は、「**データベースロード**」 グラフを確認して、どの待機状態 (複数) が主に原因であるかを特定します。

1. 上位のロード項目テーブルの **[上位のクエリ]** タブが待機状態に最も影響しているクエリを確認することによって、ロードを引き起こすダイジェストクエリを特定します。これらは **[待機別ロード (AAS)]** 列で識別できます。

1. **[上位のクエリ]** タブでこれらのダイジェストクエリの 1 つを選択して展開し、構成されている子クエリを確認します。

また、**[上位のホスト]** または **[上位のアプリケーション]** をそれぞれ選択することで、どのホストまたはアプリケーションが最もロードを発生させているかを確認することもできます。アプリケーション名は Amazon DocumentDB インスタンスへの接続文字列で指定されます。`Unknown` は、アプリケーションフィールドが指定されなかったことを示します。

例えば、以下のダッシュボードで、**CPU** の待機はほとんどの DB ロードの主な原因となっています。**[上位のクエリ]** で上位クエリを選択すると、選択クエリによって発生しているロードが最も大きいことに焦点を当てるようにデータベースロードチャートが絞り込まれます。

![\[CPU 使用率のスパイクを示すデータベース負荷グラフ。対応する上位クエリタブには、待機状態に最も寄与するクエリが表示されます。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/db-load-1.png)


![\[待機状態に最も寄与するクエリの CPU 使用率の急増を示すデータベース負荷グラフ。対応する上位クエリタブには、クエリの子クエリが表示されます。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/db-load-2.png)


# [上位のクエリ] タブの概要
<a name="performance-insights-top-queries"></a>

デフォルトでは、**[上位のクエリ]** タブはデータベースロードに最も貢献しているクエリを表示します。クエリテキストを分析して、クエリの調整に役立てることができます。

**Topics**
+ [クエリダイジェスト](#performance-insights-top-queries-digests)
+ [待機によるロード (AAS)](#performance-insights-top-queries-aas)
+ [詳細なクエリ情報を表示します](#performance-insights-top-queries-query-info)
+ [ステートメントのクエリテキストへのアクセス](#performance-insights-top-queries-accessing-text)
+ [ステートメントのクエリテキストの表示とダウンロード](#performance-insights-top-queries-viewing-downloading)

## クエリダイジェスト
<a name="performance-insights-top-queries-digests"></a>

*クエリダイジェスト* は、構造的には類似しているが、異なるリテラル値を含む可能性の高い、複数の実際のクエリの複合体です。ダイジェストは、ハードコードされた値を疑問符に置き換えます。クエリダイジェストの例は次のようになります。

```
{"find":"customerscollection","filter":{"FirstName":"?"},"sort":{"key":{"$numberInt":"?"}},"limit":{"$numberInt":"?"}}
```

このダイジェストには、次の子クエリが含まれます。

```
{"find":"customerscollection","filter":{"FirstName":"Karrie"},"sort":{"key":{"$numberInt":"1"}},"limit":{"$numberInt":"3"}}
{"find":"customerscollection","filter":{"FirstName":"Met"},"sort":{"key":{"$numberInt":"1"}},"limit":{"$numberInt":"3"}}
{"find":"customerscollection","filter":{"FirstName":"Rashin"},"sort":{"key":{"$numberInt":"1"}},"limit":{"$numberInt":"3"}}
```

ダイジェスト内でリテラルクエリステートメントを表示するには、クエリを選択してからプラス記号 (`+`) を選択します。以下のスクリーンショットでは、選択されたクエリはダイジェストです。

![\[1 つの子クエリが選択された拡張クエリダイジェストを示す上位クエリテーブル。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/top-queries-literal.png)


**注記**  
クエリダイジェストでは、類似したクエリステートメントがグループ化されますが、機密情報は編集されません。

## 待機によるロード (AAS)
<a name="performance-insights-top-queries-aas"></a>

**[上位のクエリ]** の **[待機別のロード (AAS)]** 列は、上位の各ロード項目に関連付けられているデータベースロードの割合を示しています。この列には、**[DB ロードグラフ]** で現在選択されているグループ化に応じて、その項目に対するロードが反映されます。例えば、**DB ロードグラフ**を待機状態別にグループ化できます。この場合は、[**待機別の DB ロード**] バーは、クエリが貢献している待機状態の量を示すために、サイズ、セグメント、および色で分けられています。また、選択したクエリに影響を与えている待機状態も示されます。

![\[CPU、IO、ラッチ待機状態別にグループ化されたデータベース負荷を示す棒グラフ。対応するテーブルには、待機による負荷に基づく上位のクエリが表示されます。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/top-queries-aas.png)


## 詳細なクエリ情報を表示します
<a name="performance-insights-top-queries-query-info"></a>

**[上位のクエリ]** テーブルで、*ダイジェストステートメント*を開いてその情報を表示できます。下部のペインに情報が表示されます。

![\[選択したクエリステートメントと以下のそのクエリ情報を示す上位クエリテーブル。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/top-queries-detailed.png)


クエリステートメントに関連付けられているタイプの識別子 (ID) は以下のとおりです。

1. **サポートクエリ ID**: クエリ ID のハッシュ値。この値は、 AWS Support で作業しているときにクエリ ID を参照するためのものです。 AWS Support は実際のクエリ IDsとクエリテキストにアクセスできません。

1. **ダイジェスト ID のサポート** - ダイジェスト ID のハッシュ値。この値は、 AWS サポートで作業しているときにダイジェスト ID を参照するためのものです。 AWS サポートは実際のダイジェスト IDsとクエリテキストにアクセスできません。

## ステートメントのクエリテキストへのアクセス
<a name="performance-insights-top-queries-accessing-text"></a>

デフォルトでは、**[上位のクエリ]** テーブルの各行には各クエリステートメントごとに 500 バイトのクエリテキストが表示されます。ダイジェストステートメントのサイズが 500 バイトを超える場合、Performance Insights ダッシュボードでこのステートメントを開いて、テキストの表示量を増やすことができます。この場合、表示されるクエリの最大長は 1 KB です。フルクエリステートメントを表示する場合は、**[ダウンロード]** を選択することもできます。

## ステートメントのクエリテキストの表示とダウンロード
<a name="performance-insights-top-queries-viewing-downloading"></a>

Performance Insights ダッシュボードで、クエリテキストを表示およびダウンロードできます。

**Performance Insights ダッシュボードでクエリテキストの表示量を増やすには**

1. Amazon DocumentDB コンソールを、次の場所で開きます。[https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb/) 

1. ナビゲーションペインで、[**Performance Insights**] を選択します。

1. DB インスタンスを選択します。この DB インスタンスに Performance Insights ダッシュボードが表示されます。

   500 バイトを超えるクエリステートメントは、次のように表示されます。  
![\[子クエリが選択された上位クエリテーブル。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/top-queries-statement.png)

1. クエリ情報セクションを調べて、クエリテキストをさらに表示します。  
![\[選択したクエリの全文を示すクエリ情報セクション。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/top-queries-query-text.png)

Performance Insights ダッシュボードは、各フルクエリステートメントで最大 1 KB までを表示できます。

**注記**  
クエリステートメントをコピーまたはダウンロードするには、ポップアップブロッカーを無効にします。

# データベースロードグラフのズームイン
<a name="performance-insights-zoom-db-load"></a>

Performance Insights のユーザーインターフェイスの他の機能を使用して、パフォーマンスデータを分析できます。

**クリックアンドドラッグしてズームイン**  
Performance Insights のインターフェイスでは、ロードグラフの小さな部分を選択して、詳細をズームインすることができます。

![\[その一部がズームイン用に強調表示されている、データベース負荷を示す棒グラフ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/pi-zoom-1.png)


ロードグラフの一部を拡大するには、スタート時間を選択し、目的の期間の最後までドラッグします。これを行うと、選択した領域が強調表示されます。マウスを離すと、選択したエリアのロードグラフがズームインされ、**上位*項目*** テーブルが再計算されます。

![\[以下の対応する上位待機数テーブルがある、ズームインした部分を示すデータベースロード棒グラフ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/pi-zoom-2.png)


# Performance Insights API によるメトリクスの取得
<a name="performance-insights-metrics"></a>

Performance Insights が有効になっている場合、API はインスタンスのパフォーマンスを可視化します。Amazon CloudWatch Logs は、 AWS サービスの供給モニタリングメトリクスの信頼できるソースを提供します。

Performance Insightsは、平均アクティブ・セッション(AAS)として測定されるデータベースロードのドメイン固有のビューを提供します。このメトリクスはAPI利用者には2次元時系列データセットのように見えます。データの時間ディメンションは、クエリされた時間範囲内の各時点のDBロード・データを提供します。各時点で、その時点で計測された `Query`、`Wait-state`、`Application`、`Host` などのリクエストされたディメンションに関するロード全体が分解されます。

Amazon DocumentDB Performance Insights では、Amazon DocumentDB DB インスタンスをモニタリングし、データベースパフォーマンスの分析とトラブルシューティングを行うことができます。Performance Insights は、 AWS マネジメントコンソールで表示することができます。また、Performance Insights では独自のデータをクエリできるように、パブリック API も提供されています。API を使用して、次を実行できます。
+ データベースにデータをオフロードする
+ Performance Insights データを既存のモニタリングダッシュボードに追加する
+ モニタリングツールを構築する

Performance Insights API を使用するには、いずれかの Amazon DocumentDB インスタンスで Performance Insights を有効にします。Performance Insights の有効化については、「[Performance Insights の有効化と無効化](performance-insights-enabling.md)」を参照してください。Performance Insights API の詳細については、「[パフォーマンスインサイト API リファレンス](https://docs.aws.amazon.com/performance-insights/latest/APIReference/Welcome.html)」を参照してください。

Performance Insights API は、以下のオペレーションを提供します。


****  

|  Performance Insights でのアクション  |  AWS CLI コマンド  |  説明  | 
| --- | --- | --- | 
|  [https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_DescribeDimensionKeys.html](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_DescribeDimensionKeys.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/pi/describe-dimension-keys.html](https://docs.aws.amazon.com/cli/latest/reference/pi/describe-dimension-keys.html)  |  特定の期間に、メトリクスの上位 N 個のディメンションキーを取得します。  | 
|  [https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_GetDimensionKeyDetails.html](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_GetDimensionKeyDetails.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/pi/get-dimension-key-details.html](https://docs.aws.amazon.com/cli/latest/reference/pi/get-dimension-key-details.html)  |  DB インスタンスまたはデータソースの指定されたディメンショングループの属性を取得します。例えば、クエリ ID を指定し、ディメンションの詳細が使用可能な場合、`GetDimensionKeyDetails` は、この ID に関連付けられているディメンション `db.query.statement` の全文を取得します。このオペレーションは、`GetResourceMetrics` および `DescribeDimensionKeys` が大きなクエリステートメントテキストの取得をサポートしないため、便利です。  | 
| [GetResourceMetadata](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_GetResourceMetadata.html) |  [https://docs.aws.amazon.com/cli/latest/reference/pi/get-resource-metadata.html](https://docs.aws.amazon.com/cli/latest/reference/pi/get-resource-metadata.html)  |  さまざまな機能に関するメタデータを取得します。例えば、メタデータにより、特定の DB インスタンスで何等かの機能が有効化されているか無効化されているかを、示すことができます。  | 
|  [https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_GetResourceMetrics.html](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_GetResourceMetrics.html)  |  [https://docs.aws.amazon.com/cli/latest/reference/pi/get-resource-metrics.html](https://docs.aws.amazon.com/cli/latest/reference/pi/get-resource-metrics.html)  |  期間中、データソースのセットに Performance Insights のメトリクスを取得します。特定のディメンショングループおよびディメンションを提供し、各グループの集約とフィルタリング条件を提供することができます。  | 
| [ListAvailableResourceDimensions](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_ListAvailableResourceDimensions.html) |  [https://docs.aws.amazon.com/cli/latest/reference/pi/list-available-resource-dimensions.html](https://docs.aws.amazon.com/cli/latest/reference/pi/list-available-resource-dimensions.html)  |  指定したインスタンスで、指定したメトリクスタイプごとにクエリできるディメンションを取得します。  | 
| [ListAvailableResourceMetrics](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_ListAvailableResourceMetrics.html) |  [https://docs.aws.amazon.com/cli/latest/reference/pi/list-available-resource-metrics.html](https://docs.aws.amazon.com/cli/latest/reference/pi/list-available-resource-metrics.html)  |  DB インスタンスを指定しながら、指定されたメトリクスタイプでクエリが可能なメトリクスをすべて取得します。  | 

**Topics**
+ [AWS CLI Performance Insights 用](#performance-insights-metrics-CLI)
+ [時系列メトリクスの取得](#performance-insights-metrics-time-series)
+ [AWS CLI Performance Insights の例](#performance-insights-metrics-api-examples)

## AWS CLI Performance Insights 用
<a name="performance-insights-metrics-CLI"></a>

Performance Insights は、 AWS CLIを使用して表示することができます。Performance Insights の AWS CLI コマンドのヘルプを表示するには、コマンドラインで次のように入力します。

```
aws pi help
```

 AWS CLI がインストールされていない場合は、[「 ユーザーガイド」の AWS 「 コマンドラインインターフェイス](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)のインストール」を参照してください。 *AWS CLI *

## 時系列メトリクスの取得
<a name="performance-insights-metrics-time-series"></a>

`GetResourceMetrics` オペレーションでは、1 つ以上の時系列メトリクスを Performance Insights データから取得します。`GetResourceMetrics` には、メトリクスおよび期間が必要であり、データポイントのリストを含むレスポンスが返ります。

たとえば、次の図に示すように、 は AWS マネジメントコンソール を使用して**カウンターメトリクス**グラフと**データベースロード**グラフ`GetResourceMetrics`を入力します。

![\[カウンターメトリクスグラフおよびデータベースロードグラフ\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/perf-insights-api-charts.png)


`GetResourceMetrics` によって返るメトリクスはすべて、`db.load` の例外を除き、スタンダードの時系列メトリクスです。このメトリクスは、[**データベースロード**] グラフに表示されます。この `db.load` メトリクスは、*ディメンション*と呼ばれるサブコンポーネントに分割できるため、他の時系列メトリクスとは異なります。前のイメージでは、`db.load` は分割され、`db.load` を構成する待機状態によってグループ化されています。

**注記**  
`GetResourceMetrics` は、`db.sampleload` メトリクスを返すこともできますが、通常 `db.load` メトリクスが適切です。

`GetResourceMetrics` により返されるカウンターメトリクスに関する情報は、「[カウンターメトリクス用の Performance Insights](performance-insights-counter-metrics.md)」を参照してください。

以下の計算は、メトリクスにサポートされています。
+ 平均 - 期間中のメトリクスの平均値。`.avg` をメトリクス名に追加します。
+ 最小 - 期間中のメトリクスの最小値。`.min` をメトリクス名に追加します。
+ 最大 - 期間中のメトリクスの最大値。`.max` をメトリクス名に追加します。
+ 合計 - 期間中のメトリクス値の合計。`.sum` をメトリクス名に追加します。
+ サンプル数 - 期間中にメトリクスが収集された回数。`.sample_count` をメトリクス名に追加します。

例えば、メトリクスが 300 秒 (5 分) 収集され、メトリクスが 1 分に 1 回収集されたものと見なします。毎分の値は、1、2、3、4、5 です。この場合、以下の計算が返されます。
+ 平均 - 3
+ 最小 - 1
+ 最大 - 5
+ 合計 - 15
+ サンプル数 - 5

`get-resource-metrics` AWS CLI コマンドの使用の詳細については、「」を参照してください[https://docs.aws.amazon.com/cli/latest/reference/pi/get-resource-metrics.html](https://docs.aws.amazon.com/cli/latest/reference/pi/get-resource-metrics.html)。

`--metric-queries` オプションでは、結果を取得する 1 つ以上のクエリを指定します。各クエリは、必須の `Metric` と、オプションの `GroupBy` および `Filter` パラメータから構成されます。`--metric-queries` オプションの指定の例を次に示します。

```
{
   "Metric": "string",
   "GroupBy": {
     "Group": "string",
     "Dimensions": ["string", ...],
     "Limit": integer
   },
   "Filter": {"string": "string"
     ...}
```

## AWS CLI Performance Insights の例
<a name="performance-insights-metrics-api-examples"></a>

次の例は、Performance Insights AWS CLI に を使用する方法を示しています。

**Topics**
+ [カウンターメトリクスの取得](#performance-insights-metrics-api-examples.CounterMetrics)
+ [上位の待機状態に関する DB 平均ロードの取得](#performance-insights-metrics-api-examples.DBLoadAverage)
+ [上位のクエリに関する DB 平均ロードの取得](#performance-insights-metrics-api-examples.topquery)
+ [クエリによってフィルタリングされた平均 DB ロードの取得](#performance-insights-metrics-api-examples.DBLoadAverageByQuery)

### カウンターメトリクスの取得
<a name="performance-insights-metrics-api-examples.CounterMetrics"></a>

以下のスクリーンショットは、 AWS マネジメントコンソールにおける 2 つのカウンターメトリクスグラフを示します。

![\[カウンターメトリクスグラフ\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/performance-insights/perf-insights-api-counters-charts.png)


以下の例では、2 つのカウンターメトリクスグラフを生成するために AWS マネジメントコンソール で使用するデータと同じデータを生成する方法を示します。

Linux、macOS、Unix の場合:

```
aws pi get-resource-metrics \
   --service-type DOCDB \
   --identifier db-ID \
   --start-time 2022-03-13T8:00:00Z \
   --end-time   2022-03-13T9:00:00Z \
   --period-in-seconds 60 \
   --metric-queries '[{"Metric": "os.cpuUtilization.user.avg"  },
                      {"Metric": "os.cpuUtilization.idle.avg"}]'
```

Windows の場合:

```
aws pi get-resource-metrics ^
   --service-type DOCDB ^
   --identifier db-ID ^
   --start-time 2022-03-13T8:00:00Z ^
   --end-time   2022-03-13T9:00:00Z ^
   --period-in-seconds 60 ^
   --metric-queries '[{"Metric": "os.cpuUtilization.user.avg"  },
                      {"Metric": "os.cpuUtilization.idle.avg"}]'
```

また、コマンドを作成しやすくするために、`--metrics-query` オプションにファイルを指定します。以下の例では、このオプション用に query.json と呼ばれるファイルを使用します。ファイルの内容は次のとおりです。

```
[
    {
        "Metric": "os.cpuUtilization.user.avg"
    },
    {
        "Metric": "os.cpuUtilization.idle.avg"
    }
]
```

ファイルを使用するには、次のコマンドを実行します。

Linux、macOS、Unix の場合:

```
aws pi get-resource-metrics \
   --service-type DOCDB \
   --identifier db-ID \
   --start-time 2022-03-13T8:00:00Z \
   --end-time   2022-03-13T9:00:00Z \
   --period-in-seconds 60 \
   --metric-queries file://query.json
```

Windows の場合:

```
aws pi get-resource-metrics ^
   --service-type DOCDB ^
   --identifier db-ID ^
   --start-time 2022-03-13T8:00:00Z ^
   --end-time   2022-03-13T9:00:00Z ^
   --period-in-seconds 60 ^
   --metric-queries file://query.json
```

前述の例では、各オプションに次の値を指定します。
+ `--service-type`: Amazon DocumentDB の `DOCDB`
+ `--identifier` - DB インスタンスのリソース ID
+ `--start-time` および `--end-time` - クエリを実行する期間の ISO 8601 `DateTime` 値 (サポートされている複数の形式)

クエリは 1 時間の範囲で実行されます。
+ `--period-in-seconds` - `60` (1 分ごとのクエリ)
+ `--metric-queries` - 2 つのクエリの配列。それぞれ 1 つのメトリクスに対して使用されます。

  メトリクス名ではドットを使用してメトリクスを有用なカテゴリに分類します。最終の要素は関数になります。この例では、関数は、クエリの `avg` です。Amazon CloudWatch と同様に、サポートされている関数は、`min`、`max`、`total`、および `avg` です。

レスポンスは次の例のようになります。

```
{
    "AlignedStartTime": "2022-03-13T08:00:00+00:00",
    "AlignedEndTime": "2022-03-13T09:00:00+00:00",
    "Identifier": "db-NQF3TTMFQ3GTOKIMJODMC3KQQ4",
    "MetricList": [
        {
            "Key": {
                "Metric": "os.cpuUtilization.user.avg"
            },
            "DataPoints": [
                {
                    "Timestamp": "2022-03-13T08:01:00+00:00", //Minute1
                    "Value": 3.6
                },
                {
                    "Timestamp": "2022-03-13T08:02:00+00:00", //Minute2
                    "Value": 2.6
                },
                //.... 60 datapoints for the os.cpuUtilization.user.avg metric
        {
            "Key": {
                "Metric": "os.cpuUtilization.idle.avg"
            },
            "DataPoints": [
                {
                    "Timestamp": "2022-03-13T08:01:00+00:00",
                    "Value": 92.7
                },
                {
                    "Timestamp": "2022-03-13T08:02:00+00:00",
                    "Value": 93.7
                },
                //.... 60 datapoints for the os.cpuUtilization.user.avg metric 
            ]
        }
    ] //end of MetricList
} //end of response
```

レスポンスには、`Identifier`、`AlignedStartTime`、`AlignedEndTime` があります。`--period-in-seconds` 値が `60` の場合、スタート時間および終了時間は、時間 (分) に調整されます。`--period-in-seconds` が `3600` の場合、スタート時間および終了時間は、時間 (時) に調整されます。

レスポンスの `MetricList` には、多数のエントリを含み、それぞれに `Key` および `DataPoints` エントリがあります。`DataPoint` にはそれぞれ、`Timestamp` および `Value` を含みます。クエリは 1 分ごとのデータが 1 時間以上実行されるため、`Datapoints` の各リストには、60 個のデータポイントがあります。これには、`Timestamp1/Minute1` や `Timestamp2/Minute2` から、`Timestamp60/Minute60` まで含まれます。

クエリは 2 つの異なるカウンターメトリクスを対象としているため、レスポンス `MetricList` には 2 つの要素があります。

### 上位の待機状態に関する DB 平均ロードの取得
<a name="performance-insights-metrics-api-examples.DBLoadAverage"></a>

次の例は、 が積み上げ面折れ線グラフの生成 AWS マネジメントコンソール に使用するクエリと同じです。この例では、上位 7 つの待機状態に応じてロードを分割し、最後の 1 時間で `db.load.avg` を取得します。コマンドは [カウンターメトリクスの取得](#performance-insights-metrics-api-examples.CounterMetrics) と同じコマンドです。ただし、query.json ファイルには、次の内容が含まれます。

```
[
    {
        "Metric": "db.load.avg",
        "GroupBy": { "Group": "db.wait_state", "Limit": 7 }
    }
]
```

次のコマンドを実行します。

Linux、macOS、Unix の場合:

```
aws pi get-resource-metrics \
   --service-type DOCDB \
   --identifier db-ID \
   --start-time 2022-03-13T8:00:00Z \
   --end-time   2022-03-13T9:00:00Z \
   --period-in-seconds 60 \
   --metric-queries file://query.json
```

Windows の場合:

```
aws pi get-resource-metrics ^
   --service-type DOCDB ^
   --identifier db-ID ^
   --start-time 2022-03-13T8:00:00Z ^
   --end-time   2022-03-13T9:00:00Z ^
   --period-in-seconds 60 ^
   --metric-queries file://query.json
```

この例では、上位 7 つの待機状態のうち `db.load.avg` と `GroupBy` のメトリクスを指定しています。この例の有効な値の詳細については、*Performance Insights の API リファレンス*の「[DimensionGroup](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_DimensionGroup.html)」を参照してください。

レスポンスは次の例のようになります。

```
{
    "AlignedStartTime": "2022-04-04T06:00:00+00:00",
    "AlignedEndTime": "2022-04-04T06:15:00+00:00",
    "Identifier": "db-NQF3TTMFQ3GTOKIMJODMC3KQQ4",
    "MetricList": [
        {//A list of key/datapoints
            "Key": {
                //A Metric with no dimensions. This is the total db.load.avg
                "Metric": "db.load.avg"
            },
            "DataPoints": [
                //Each list of datapoints has the same timestamps and same number of items
                {
                    "Timestamp": "2022-04-04T06:01:00+00:00",//Minute1
                    "Value": 0.0
                },
                {
                    "Timestamp": "2022-04-04T06:02:00+00:00",//Minute2
                    "Value": 0.0
                },
                //... 60 datapoints for the total db.load.avg key
                ]
        },
        {
            "Key": {
                //Another key. This is db.load.avg broken down by CPU
                "Metric": "db.load.avg",
                "Dimensions": {
                    "db.wait_state.name": "CPU"
                }
            },
            "DataPoints": [
                {
                    "Timestamp": "2022-04-04T06:01:00+00:00",//Minute1
                    "Value": 0.0
                },
                {
                    "Timestamp": "2022-04-04T06:02:00+00:00",//Minute2
                    "Value": 0.0
                },
                //... 60 datapoints for the CPU key
            ]
        },//... In total we have 3 key/datapoints entries, 1) total, 2-3) Top Wait States
    ] //end of MetricList
} //end of response
```

このレスポンスでは、`MetricList` の 3 つのエントリがあります。合計の `db.load.avg` のエントリが 1 つあり、上位 3 つの待機イベントのいずれかに従って分割された `db.load.avg` のエントリが 3 つあります。(最初の例とは異なり) グループ化ディメンションがあったため、メトリクスのグループ化ごとに 1 つのキーが必要です。基本的なカウンターメトリクスのユースケースのように、メトリクスごとに 1 つのキーのみ使用することはできません。

### 上位のクエリに関する DB 平均ロードの取得
<a name="performance-insights-metrics-api-examples.topquery"></a>

以下の例では、上位 10 個のクエリステートメント別に `db.wait_state` をグループ化します。クエリステートメントには 2 つの異なるグループがあります。
+ `db.query` - フルクエリステートメント (例: `{"find":"customers","filter":{"FirstName":"Jesse"},"sort":{"key":{"$numberInt":"1"}}}` )
+ `db.query_tokenized` - トークン化されたクエリステートメント (例: `{"find":"customers","filter":{"FirstName":"?"},"sort":{"key":{"$numberInt":"?"}},"limit":{"$numberInt":"?"}}`)

データベースのパフォーマンスを分析するときは、パラメータが異なるだけのクエリステートメントを 1 つの論理的な項目として検討すると便利です。そのため、クエリを実行する際、`db.query_tokenized` を使用することができます。ただし、特に `explain()` に関心がある場合は、パラメータ付きのフルクエリステートメントを調べる方が便利な場合があります。トークン化されたクエリと完全クエリの間には親子関係があり、複数の完全クエリ (子) が同じトークン化されたクエリ (親) の下にグループ化されています。

この例のコマンドは、[上位の待機状態に関する DB 平均ロードの取得](#performance-insights-metrics-api-examples.DBLoadAverage) のコマンドに似ています。ただし、query.json ファイルには、次の内容が含まれます。

```
[
    {
        "Metric": "db.load.avg",
        "GroupBy": { "Group": "db.query_tokenized", "Limit": 10 }
    }
]
```

次の例では `db.query_tokenized` を使用しています。

Linux、macOS、Unix の場合:

```
aws pi get-resource-metrics \
   --service-type DOCDB \
   --identifier db-ID \
   --start-time 2022-03-13T8:00:00Z \
   --end-time   2022-03-13T9:00:00Z \
   --period-in-seconds 3600 \
   --metric-queries file://query.json
```

Windows の場合:

```
aws pi get-resource-metrics ^
   --service-type DOCDB ^
   --identifier db-ID ^
   --start-time 2022-03-13T8:00:00Z ^
   --end-time   2022-03-13T9:00:00Z  ^
   --period-in-seconds 3600 ^
   --metric-queries file://query.json
```

この例では、1 分の間隔 (秒単位) で 1 時間以上のクエリを実行します。

この例では、上位 7 つの待機状態のうち `db.load.avg` と `GroupBy` のメトリクスを指定しています。この例の有効な値の詳細については、*Performance Insights の API リファレンス*の「[DimensionGroup](https://docs.aws.amazon.com/performance-insights/latest/APIReference/API_DimensionGroup.html)」を参照してください。

レスポンスは次の例のようになります。

```
{
    "AlignedStartTime": "2022-04-04T06:00:00+00:00",
    "AlignedEndTime": "2022-04-04T06:15:00+00:00",
    "Identifier": "db-NQF3TTMFQ3GTOKIMJODMC3KQQ4",
    "MetricList": [
        {//A list of key/datapoints
            "Key": {
                "Metric": "db.load.avg"
            },
            "DataPoints": [
                //... 60 datapoints for the total db.load.avg key
                ]
        },
               {
            "Key": {//Next key are the top tokenized queries
                "Metric": "db.load.avg",
                "Dimensions": {
                    "db.query_tokenized.db_id": "pi-1064184600",
                    "db.query_tokenized.id": "77DE8364594EXAMPLE",
                    "db.query_tokenized.statement": "{\"find\":\"customers\",\"filter\":{\"FirstName\":\"?\"},\"sort\":{\"key\":{\"$numberInt\":\"?\"}},\"limit\"
:{\"$numberInt\":\"?\"},\"$db\":\"myDB\",\"$readPreference\":{\"mode\":\"primary\"}}"
                }
            },
            "DataPoints": [
            //... 60 datapoints 
            ]
        },
        // In total 11 entries, 10 Keys of top tokenized queries, 1 total key 
    ] //End of MetricList
} //End of response
```

このレスポンスの `MetricList` には 11 のエントリがあり (合計が 1 つと、トークン化された上位 10 項目のクエリ)、各エントリには、1 時間あたり 24 の `DataPoints` があります。

トークン化されたクエリの場合は、各ディメンションリストに 3 つのエントリがあります。
+ `db.query_tokenized.statement`: トークン化されたクエリステートメント。
+ `db.query_tokenized.db_id `: Performance Insights が生成する合成 ID。この例では、`pi-1064184600` 合成 ID が返ります。
+ `db.query_tokenized.id` - Performance Insights 内のクエリの ID。

  では AWS マネジメントコンソール、この ID はサポート ID と呼ばれます。ID は、データベースに関する問題のトラブルシューティングに役立つように AWS サポートが調査できるデータであるため、この名前が付けられます。 はデータのセキュリティとプライバシーを非常に真剣に AWS 受け止め、ほぼすべてのデータが で暗号化されて保存されます AWS KMS key。したがって、内部の誰もこのデータを見る AWS ことはできません。前の例では、`tokenized.statement` と `tokenized.db_id` の両方が暗号化されて保存されます。データベースに問題がある場合は、 AWS サポート ID を参照してサポートにお問い合わせください。

クエリを実行する際、`Group` で `GroupBy` を指定した方が便利な場合があります。ただし、返るデータを詳細に制御できるように、ディメンションのリストを指定します。例えば、必要なデータが `db.query_tokenized.statement` のみの場合は、`Dimensions` 属性を query.json ファイルに追加することができます。

```
[
    {
        "Metric": "db.load.avg",
        "GroupBy": {
            "Group": "db.query_tokenized",
            "Dimensions":["db.query_tokenized.statement"],
            "Limit": 10
        }
    }
]
```

### クエリによってフィルタリングされた平均 DB ロードの取得
<a name="performance-insights-metrics-api-examples.DBLoadAverageByQuery"></a>

この例に対応する API クエリは、[上位のクエリに関する DB 平均ロードの取得](#performance-insights-metrics-api-examples.topquery) のコマンドに似ています。ただし、query.json ファイルには、次の内容が含まれます。

```
[
 {
        "Metric": "db.load.avg",
        "GroupBy": { "Group": "db.wait_state", "Limit": 5  }, 
        "Filter": { "db.query_tokenized.id": "AKIAIOSFODNN7EXAMPLE" }
    }
]
```

このレスポンスでは、query.json ファイルで指定されているトークン化されたクエリAKIAIOSFODNN7EXAMPLE の割合に従って、値はすべてフィルタリングされます。キーは、フィルタなしのクエリとは異なる順序で表示されることもあります。これは、フィルタ処理されたクエリに影響を与えるのは上位 5 つの待機クエリであるためです。

# Performance Insights の Amazon CloudWatch メトリクス
<a name="performance-insights-cloudwatch"></a>

Performance Insights はメトリクスを自動的に Amazon CloudWatch に発行します。Performance Insights から同じデータに対してクエリを実行できますが、CloudWatch にメトリクスを含めると、CloudWatch アラームを追加しやすくなります。また、既存の CloudWatch ダッシュボードにメトリクスを追加しやすくなります。


| メトリクス | 説明 | 
| --- | --- | 
|  DBLoad  |  Amazon DocumentDB のアクティブセッション数。通常、アクティブセッションの平均数に関するデータを使用します。Performance Insights で、このデータは `db.load.avg` としてクエリされます。  | 
|  DBLoadCPU  |  待機状態タイプが CPU であるアクティブセッションの数。Performance Insights で、このデータは、待機状態タイプ `db.load.avg` でフィルタ処理された `CPU` としてクエリされます。  | 
|  DBLoadNonCPU  |  待機状態タイプが CPU でないアクティブセッションの数。  | 

**注記**  
これらのメトリクスは、DB インスタンスにロードがある場合にのみ CloudWatch に公開されます。

これらのメトリクスは、CloudWatch コンソール、 AWS CLI、または CloudWatch API を使用して調べることができます。

例えば、`DBLoad` メトリクスの統計情報は、[get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) コマンドを実行して取得できます。

```
aws cloudwatch get-metric-statistics \
    --region ap-south-1 \
    --namespace AWS/DocDB \
    --metric-name DBLoad  \
    --period 360 \
    --statistics Average \
    --start-time 2022-03-14T8:00:00Z \
    --end-time 2022-03-14T9:00:00Z \
    --dimensions Name=DBInstanceIdentifier,Value=documentdbinstance
```

次のコマンドでは、以下のような出力が生成されます。

```
{
    "Datapoints": [
        {
            "Timestamp": "2022-03-14T08:42:00Z", 
            "Average": 1.0, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2022-03-14T08:24:00Z", 
            "Average": 2.0, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2022-03-14T08:54:00Z", 
            "Average": 6.0, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2022-03-14T08:36:00Z", 
            "Average": 5.7, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2022-03-14T08:06:00Z", 
            "Average": 4.0, 
            "Unit": "None"
        }, 
        {
            "Timestamp": "2022-03-14T08:00:00Z", 
            "Average": 5.2, 
            "Unit": "None"
        }
    ], 
    "Label": "DBLoad"
}
```

CloudWatch コンソールの `DB_PERF_INSIGHTS` メトリクス数学関数を使用して Amazon DocumentDB にクエリを実行し、Performance Insights カウンターメトリクスを取得できます。`DB_PERF_INSIGHTS` 関数には、1 分未満の間隔での `DBLoad` メトリクスも含まれます。これらのメトリクスに基づいた CloudWatch アラームを設定することができます。アラームの作成方法の詳細については、[AWS 「データベースから Performance Insights カウンターメトリクスにアラームを作成する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_alarm_database_performance_insights.html)」を参照してください。

CloudWatch の詳細については、「*Amazon CloudWatch ユーザーガイド*」の「[Amazon CloudWatch とは](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)」を参照してください。

# カウンターメトリクス用の Performance Insights
<a name="performance-insights-counter-metrics"></a>

カウンターメトリクスは、Performance Insights ダッシュボードのオペレーティングシステムメトリクスのことです。カウンターメトリクスを DB ロードと関連付けることで、パフォーマンスの問題を特定して分析できます。

## Performance Insights オペレーティングシステムのカウンター
<a name="performance-insights-counter-metrics-counters"></a>

Amazon DocumentDB のパフォーマンスインサイトでは、以下のオペレーティングシステムカウンターを利用できます。


| Counter | タイプ | メトリクス | 
| --- | --- | --- | 
| active | メモリ | os.memory.active | 
| buffers | メモリ | os.memory.buffers | 
| キャッシュ済み | メモリ | os.memory.cached | 
| dirty | メモリ | os.memory.dirty | 
| free | メモリ | os.memory.free | 
| 無効 | メモリ | os.memory.inactive | 
| mapped | メモリ | os.memory.mapped | 
| pageTables | メモリ | os.memory.pageTables | 
| slab | メモリ | os.memory.slab | 
| total | メモリ | os.memory.total | 
| writeback | メモリ | os.memory.writeback | 
| idle | cpuUtilization | os.cpuUtilization.idle | 
| system | cpuUtilization | os.cpuUtilization.system | 
| total | cpuUtilization | os.cpuUtilization.total | 
| ユーザー | cpuUtilization | os.cpuUtilization.user | 
| によって | cpuUtilization | os.cpuUtilization.wait | 
| one | loadAverageMinute | os.loadAverageMinute.one | 
| fifteen | loadAverageMinute | os.loadAverageMinute.fifteen | 
| 5 | loadAverageMinute | os.loadAverageMinute.five | 
| キャッシュ済み | スワップ | os.swap.cached | 
| free | スワップ | os.swap.free | 
| が | スワップ | os.swap.in | 
| out | スワップ | os.swap.out | 
| total | スワップ | os.swap.total | 
| rx | ネットワーク | os.network.rx | 
| tx | ネットワーク | os.network.tx | 
| numVCPUs | 全般 | os.general.numVCPUs | 