Profiling Amazon DocumentDB Operations - Amazon DocumentDB

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Profiling Amazon DocumentDB Operations

Amazon DocumentDB (MongoDB 互換) のプロファイラーを使用して、クラスターで実行されたオペレーションの実行時間と詳細を記録できます。プロファイラーは、クラスターで最も遅いオペレーションをモニタリングし、個々のクエリパフォーマンスとクラスター全体のパフォーマンスを向上させるのに役立ちます。

デフォルトでは、プロファイラー機能は無効になっています。有効にすると、プロファイラーは、お客様定義のしきい値 (100 ms など) の値より時間がかかっているオペレーションを Amazon CloudWatch Logs に記録します。ログに記録される詳細には、プロファイリングされたコマンド、時間、プランの概要、クライアントメタデータが含まれます。オペレーションが CloudWatch Logs に記録されると、CloudWatch Logs Insights を使用して Amazon DocumentDB プロファイリングデータを分析、モニタリング、アーカイブできます。一般的なクエリについては、「Common Queries」セクションを参照してください 。

有効にすると、プロファイラーはクラスター内の追加のリソースを利用します。高いしきい値 (500 ms など) から開始し、値を徐々に小さくして、低速なオペレーションを識別することをお勧めします。しきい値 50 ms から開始すると、高スループットのアプリケーションのクラスターでパフォーマンスの問題が発生する可能性があります。プロファイラーはクラスターレベルで有効になり、クラスター内のすべてのインスタンスとデータベースで実行されます。Amazon DocumentDB は、ベストエフォートベースでオペレーションを Amazon CloudWatch Logs に記録します。

Amazon DocumentDB では、プロファイラーを有効にするための追加料金はかかりませんが、CloudWatch Logs の使用に対して標準料金が課金されます。CloudWatch Logs の料金については、「Amazon CloudWatch の料金」を参照してください。

Supported Operations

Amazon DocumentDB プロファイラーは以下のオペレーションをサポートします。

  • aggregate

  • count

  • delete

  • distinct

  • find (OP_QUERY and command)

  • findAndModify

  • insert

  • update

Limitations

スロークエリプロファイラは、クエリの結果セット全体が1つのバッチに収まり、結果セットが16MB(最大BSONサイズ)未満である場合にのみ、プロファイラログを出力できます。16MBを超える結果セットは、自動的に複数のバッチに分割されます。

ほとんどのドライバまたはシェルは、小さいデフォルトのバッチサイズを設定できます。クエリの一部としてバッチサイズを指定できます。スロークエリログをキャプチャするために、期待される結果セットのサイズを超えるバッチサイズを推奨します。結果セットのサイズが不明な場合、またはサイズが異なる場合は、バッチサイズを大きい数値(例:100k)に設定することもできます。

ただし、バッチサイズを大きくすると、応答がクライアントに送信される前に、データベースからより多くの結果を取得する必要があります。一部のクエリでは、結果が出るまでに遅延が長くなることがあります。結果セット全体を消費する予定がない場合、クエリーの処理により多くのI/Oを費やし、結果を廃棄する可能性があります。

Enabling the Amazon DocumentDB Profiler

クラスターでプロファイラーを有効にするには、3 つのステップを実行します。すべてのステップが完了していることを確認します。完了しないと、プロファイリングログが CloudWatch Logs に送信されません。プロファイラーはクラスターレベルで設定され、クラスターのすべてのデータベースとインスタンスで実行されます。

クラスターでプロファイラーを有効にするには

  1. デフォルトのクラスターパラメータグループを変更できないため、使用できるカスタムクラスターパラメータグループがあることを確認してください。詳細については、「Creating Amazon DocumentDB Cluster Parameter Groups」を参照してください。

  2. 使用可能なカスタムクラスターパラメータグループを使用して、以下のパラメータを変更します。profilerprofiler_threshold_ms、および profiler_sampling_rate。 詳細については、以下を参照してください。 Modifying Amazon DocumentDB Cluster Parameter Groups.

  3. カスタムクラスターパラメータグループを使用するようにクラスターを作成または変更し、CloudWatch Logs への profiler ログのエクスポートを有効にします。

以下のセクションでは、AWS マネジメントコンソール と AWS Command Line Interface (AWS CLI) を使用してこれらのステップを実装する方法を示します。

  1. 開始する前に、Amazon DocumentDB クラスターとカスタムクラスターパラメータグループがない場合は作成します。詳細については、「Creating Amazon DocumentDB Cluster Parameter Groups」および「Amazon DocumentDB クラスターの作成」を参照してください。

  2. 使用可能なカスタムクラスターパラメータグループを使用して、以下のパラメータを変更します。詳細については、「Modifying Amazon DocumentDB Cluster Parameter Groups」を参照してください。

    • profiler — Enables or disables query profiling. Permitted values are enabled and disabled. The default value is disabled. To enable profiling, set the value to enabled.

    • profiler_threshold_ms — When profiler is set to enabled, all commands that are taking longer than profiler-threshold-ms are logged to CloudWatch. Permitted values are [50-INT_MAX]. The default value is 100.

    • profiler_sampling_rate — The fraction of slow operations that should be profiled or logged. Permitted values are [0.0-1.0]. The default value is 1.0.

  3. カスタムクラスターパラメータグループを使用するようにクラスターを変更し、プロファイラーログのエクスポートが Amazon CloudWatch に発行されるように設定します。

    1. ナビゲーションペインで、[Clusters (クラスター)] を選択し、カスタムパラメータグループをクラスターに追加します。

    2. パラメータグループを関連付けるクラスター名の左側にあるボタンを選択します。[Actions (アクション)]、[Modify (変更)] の順に選択し、クラスターを変更します。

    3. [Cluster options (クラスターオプション)] で、上記のステップからカスタムパラメータグループを選択して、クラスターに追加します。

    4. [Log exports (ログのエクスポート)] で、Amazon CloudWatch に発行する [Profiler logs (プロファイラーログ)] を選択します。

    5. [Continue (続行)] を選択して、変更の概要を表示します。

    6. 変更を確認したら、直ちに適用することも、[Scheduling of modifications (変更のスケジュール)] の下にある次のメンテナンス期間中に適用することもできます。

    7. [Modify cluster (クラスターの変更)] を選択して、新しいパラメータグループでクラスターを更新します。

次の手順では、クラスター sample-cluster でサポートされているすべてのオペレーションでプロファイラーを有効にします。

  1. 開始する前に、次のコマンドを実行し、名前に default がなく、パラメータグループファミリーとして docdb3.6 を持つクラスターパラメータグループの出力を確認して、使用可能なカスタムクラスターパラメータグループがあることを確認します。デフォルト以外のクラスターパラメータグループがない場合は、「Creating Amazon DocumentDB Cluster Parameter Groups」を参照してください。

    aws docdb describe-db-cluster-parameter-groups \ --query 'DBClusterParameterGroups[*].[DBClusterParameterGroupName,DBParameterGroupFamily]'

    次の出力では、sample-parameter-group のみが両方の条件を満たしています。

    [ [ "default.docdb3.6", "docdb3.6" ], [ "sample-parameter-group", "docdb3.6" ] ]
  2. カスタムクラスターパラメータグループを使用して、以下のパラメータを変更します。

    • profiler — Enables or disables query profiling. Permitted values are enabled and disabled. The default value is disabled. To enable profiling, set the value to enabled.

    • profiler_threshold_ms — When profiler is set to enabled, all commands taking longer than profiler -threshold-ms are logged to CloudWatch. Permitted values are [0-INT_MAX]. Setting this value to 0 profiles all supported operations. The default value is 100.

    • profiler_sampling_rate — The fraction of slow operations that should be profiled or logged. Permitted values are [0.0-1.0]. The default value is 1.0.

    aws docdb modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name sample-parameter-group \ --parameters ParameterName=profiler,ParameterValue=enabled,ApplyMethod=immediate \ ParameterName=profiler_threshold_ms,ParameterValue=100,ApplyMethod=immediate \ ParameterName=profiler_sampling_rate,ParameterValue=0.5,ApplyMethod=immediate
  3. 前のステップの sample-parameter-group カスタムクラスターパラメータグループを使用するように Amazon DocumentDB クラスターを変更し、パラメータ --enable-cloudwatch-logs-exportsprofiler に設定します。

    次のコードは、前のステップの sample-parameter-group を使用するようクラスター sample-cluster を変更し、有効な CloudWatch Logs エクスポートに profiler を追加します。

    aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --db-cluster-parameter-group-name sample-parameter-group \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["profiler"]}'

    このオペレーションによる出力は、次のようになります。

    { "DBCluster": { "AvailabilityZones": [ "us-east-1c", "us-east-1b", "us-east-1a" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "sample-cluster", "DBClusterParameterGroup": "sample-parameter-group", "DBSubnetGroup": "default", "Status": "available", "EarliestRestorableTime": "2020-04-07T02:05:12.479Z", "Endpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "MultiAZ": false, "Engine": "docdb", "EngineVersion": "3.6.0", "LatestRestorableTime": "2020-04-08T22:08:59.317Z", "Port": 27017, "MasterUsername": "test", "PreferredBackupWindow": "02:00-02:30", "PreferredMaintenanceWindow": "tue:09:50-tue:10:20", "DBClusterMembers": [ { "DBInstanceIdentifier": "sample-instance-1", "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1 }, { "DBInstanceIdentifier": "sample-instance-2", "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1 } ], "VpcSecurityGroups": [ { "VpcSecurityGroupId": "sg-abcd0123", "Status": "active" } ], "HostedZoneId": "ABCDEFGHIJKLM", "StorageEncrypted": true, "KmsKeyId": "arn:aws:kms:us-east-1:<accountID>:key/sample-key", "DbClusterResourceId": "cluster-ABCDEFGHIJKLMNOPQRSTUVWXYZ", "DBClusterArn": "arn:aws:rds:us-east-1:<accountID>:cluster:sample-cluster", "AssociatedRoles": [], "ClusterCreateTime": "2020-01-10T22:13:38.261Z", "EnabledCloudwatchLogsExports": [ "profiler" ], "DeletionProtection": true } }

Disabling the Amazon DocumentDB Profiler

プロファイラーを無効にするには、profiler パラメータと CloudWatch Logs への profiler ログのエクスポートの両方を無効にします。

Disabling the Profiler

次のように、profiler パラメータは、AWS マネジメントコンソール またはAWS CLI を使用して無効にすることができます。

次の手順では、AWS マネジメントコンソール を使用して Amazon DocumentDB profiler を無効にします。

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

  2. ナビゲーションペインで、[パラメータグループ] を選択します。次に、プロファイラーを無効にするクラスターパラメータグループの名前を選択します。

  3. 結果の [Cluster parameters (クラスターパラメータ)] ページで、profiler パラメータの左側にあるボタンを選択し、[Edit (編集)] を選択します。

  4. [Modify profiler (プロファイラーの変更)] ダイアログボックスで、リストから [disabled] を選択します。

  5. [Modify cluster parameter (クラスターパラメータの変更)] を選択します。

AWS CLI を使用してクラスターで profiler を無効にするには、次のようにクラスターを変更します。

aws docdb modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name sample-parameter-group \ --parameters ParameterName=profiler,ParameterValue=disabled,ApplyMethod=immediate

Disabling Profiler Logs Export

次のように、CloudWatch Logs への profiler ログのエクスポートは、AWS マネジメントコンソール または AWS CLI を使用して無効にできます。

次の手順では、AWS マネジメントコンソールを使用して、Amazon DocumentDB の CloudWatch へのログエクスポートを無効にします。

  1. Amazon DocumentDB コンソール (https://console.aws.amazon.com/docdb) を開きます。

  2. ナビゲーションペインで [クラスター] を選択します。ログのエクスポートを無効にするクラスターの名前の左側にあるボタンを選択します。

  3. [アクション] メニューから [Modify (変更)] を選択します。

  4. [Log exports (ログのエクスポート)] セクションまでスクロールし、[Profiler logs (プロファイラーログ)] を選択解除します。

  5. [Continue] を選択します。

  6. 変更を確認してから、この変更をクラスターにいつ適用するかを選択します。

    • Apply during the next scheduled maintenance window (次に予定されているメンテナンス期間中に適用)

    • すぐに適用

  7. [Modify cluster] (クラスターの変更) を選択します。

次のコードでは、クラスター sample-cluster を変更し、CloudWatch プロファイラーログを無効にします。

複数 Linux、macOS、または Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["profiler"]}'

複数 Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["profiler"]}'

このオペレーションによる出力は、次のようになります。

{ "DBCluster": { "AvailabilityZones": [ "us-east-1c", "us-east-1b", "us-east-1a" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "sample-cluster", "DBClusterParameterGroup": "sample-parameter-group", "DBSubnetGroup": "default", "Status": "available", "EarliestRestorableTime": "2020-04-08T02:05:17.266Z", "Endpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "MultiAZ": false, "Engine": "docdb", "EngineVersion": "3.6.0", "LatestRestorableTime": "2020-04-09T05:14:44.356Z", "Port": 27017, "MasterUsername": "test", "PreferredBackupWindow": "02:00-02:30", "PreferredMaintenanceWindow": "tue:09:50-tue:10:20", "DBClusterMembers": [ { "DBInstanceIdentifier": "sample-instance-1", "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1 }, { "DBInstanceIdentifier": "sample-instance-2", "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1 } ], "VpcSecurityGroups": [ { "VpcSecurityGroupId": "sg-abcd0123", "Status": "active" } ], "HostedZoneId": "ABCDEFGHIJKLM", "StorageEncrypted": true, "KmsKeyId": "arn:aws:kms:us-east-1:<accountID>:key/sample-key", "DbClusterResourceId": "cluster-ABCDEFGHIJKLMNOPQRSTUVWXYZ", "DBClusterArn": "arn:aws:rds:us-east-1:<accountID>:cluster:sample-cluster", "AssociatedRoles": [], "ClusterCreateTime": "2020-01-10T22:13:38.261Z", "DeletionProtection": true } }

Accessing Your Amazon DocumentDB Profiler Logs

Amazon CloudWatch のプロファイルログにアクセスするには、次のステップに従います。

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

  2. Amazon DocumentDB クラスターと同じリージョンであることを確認します。

  3. ナビゲーションペインで [ログ] を選択します。

  4. クラスターのプロファイラーログを確認するには、リストで /aws/docdb/yourClusterName/profile を選択します。

    各インスタンスのプロファイルログは、対応する各インスタンス名の下に表示されます。

Common Queries

以下に、プロファイルされたコマンドの分析に使用できる一般的なクエリをいくつか示します。CloudWatch Logs Insights の詳細については、「CloudWatch Logs Insights を使用したログデータの分析」と「サンプルクエリ」を参照してください。

Get the 10 Slowest Operations on a Specified Collection

filter ns="test.foo" | sort millis desc | limit 10

Get All the Update Operations on a Collection That Took More Than 60 ms

filter millis > 60 and op = "update"

Get the 10 Slowest Operations in the Last Month

sort millis desc | limit 10

Get All the Queries with a COLLSCAN Plan Summary

filter planSummary="COLLSCAN"