Amazon DocumentDB オペレーションのプロファイリング - Amazon DocumentDB

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

Amazon DocumentDB オペレーションのプロファイリング

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

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

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

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

サポートされているオペレーション

Amazon DocumentDB プロファイラーでは、以下の操作をサポートしています。

  • aggregate

  • count

  • delete

  • distinct

  • find (OP_QUERY と コマンド)

  • findAndModify

  • insert

  • update

制限事項

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

ほとんどのドライバまたはシェルでは、デフォルトのバッチサイズが小さく設定されている場合があります。バッチサイズは、クエリの一部として指定することができます。低速クエリログを取得するために、予想される結果セットのサイズを超えるバッチサイズをお勧めします。結果セットのサイズが不明な場合や変動する場合は、バッチサイズを大きな数値 (100k など) に設定することもできます。

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

Amazon DocumentDB プロファイラーの有効化

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

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

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

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

以下のセクションでは、 AWS Management Console と AWS Command Line Interface () を使用してこれらのステップを実装する方法を示しますAWS CLI。

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

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

    • profiler - クエリプロファイリングを有効化または無効化します。有効な値は、enabled および disabled です。デフォルト値は disabled です。プロファイリングを有効にするには、値を enabled に設定します。

    • profiler_threshold_ms - profilerが に設定されている場合enabled、 より長くかかるすべてのコマンドは に記録 profiler-threshold-msされます CloudWatch。有効な値は [50-INT_MAX] です。デフォルト値は 100 です。

    • profiler_sampling_rate - プロファイリングやロギングを行うべき低速オペレーションの割合です。有効な値は [0.0-1.0] です。デフォルト値は 1.0 です。

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

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

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

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

    4. ログエクスポート で、Amazon に発行する Profiler ログを選択します CloudWatch。

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

    6. 変更を確認したら、直ちに、あるいは、[変更のスケジューリング] の下にある次のメンテナンスウィンドウ中に適用することができます。

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

Using the AWS CLI

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

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

    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 - クエリプロファイリングを有効化または無効化します。有効な値は、enabled および disabled です。デフォルト値は disabled です。プロファイリングを有効にするには、値を enabled に設定します。

    • profiler_threshold_ms - profilerが に設定されている場合enabled、 より長くかかるすべてのコマンドprofiler -threshold-msは に記録されます CloudWatch。有効な値は [0-INT_MAX] です。この値を 0 に設定すると、サポートされているすべてのオペレーションがプロファイルされます。デフォルト値は 100 です。

    • profiler_sampling_rate - プロファイリングやロギングを行うべき低速オペレーションの割合です。有効な値は [0.0-1.0] です。デフォルト値は 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. Amazon DocumentDB クラスターを修正して、前のステップの sample-parameter-group カスタムクラスターパラメータグループを使用し、パラメータ --enable-cloudwatch-logs-exportsprofiler に設定するようにします。

    次のコードは、前のステップsample-parameter-groupの を使用するsample-clusterようにクラスターを変更し、有効な CloudWatch ログのエクスポート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 } }

Amazon DocumentDB プロファイラーの無効化

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

プロファイラーの無効化

profiler パラメータは AWS CLI、次のように AWS Management Console または を使用して無効にできます。

Using the AWS Management Console

次の手順では、 AWS Management Console を使用して Amazon DocumentDB を無効にしますprofiler

  1. にサインインし AWS Management Console、https://console.aws.amazon.com/docdb で Amazon DocumentDB コンソールを開きます。

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

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

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

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

Using the AWS CLI

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

プロファイラーログのエクスポートを無効にする

profiler ログへの CloudWatch ログのエクスポートを無効にするには AWS CLI、次のように AWS Management Console または を使用します。

Using the AWS Management Console

次の手順では、 AWS Management Console を使用して 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. [クラスタークラスターの変更] を選択します。

Using the AWS CLI

次のコードは、クラスターを変更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 } }

Amazon DocumentDB プロファイラーログへのアクセス

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

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

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

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

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

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

一般的なクエリ

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

指定されたコレクションで 10 個の最も遅いオペレーションを取得する

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

60 ミリ秒以上かかったコレクションに対するすべての更新オペレーションを取得する

filter millis > 60 and op = "update"

過去 1 か月間で最も遅いオペレーションを 10 件取得する

sort millis desc | limit 10

COLLSCAN プラン概要を含むすべてのクエリを取得する

filter planSummary="COLLSCAN"