Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

プロファイル

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • 動作
  • フィルタリングを有効にする
  • フィルターの設定解除
profile

バージョン 5.0 での変更

mongodインスタンスの場合、 コマンドはデータベースプロファイラを有効化、無効化、または構成します。 プロファイラーは、実行中のmongodインスタンスでの書き込み操作、カーソル、データベースコマンドのパフォーマンスに関するデータをキャプチャして記録します。 プロファイラーが無効の場合、 コマンドは、低速操作を診断ログに記録する方法を構成します。

mongodでは、データベースプロファイラー レベル2の場合、プロファイラーとdiagnostic logで完全なログ記録が有効になります。

データベースプロファイラー レベル1では、次の設定によってプロファイラーとdiagnostic logの両方が変更されます。

データベースプロファイラー レベル0の場合、データベースプロファイラーは無効になります。 レベル0では、次の設定によって診断ログのみが変更されます。

mongosインスタンスの場合、このコマンドは操作を診断ログに書き込む方法のみを構成します。 にはプロファイラーが書き込みできるコレクションがないため、 インスタンスで データベースプロファイラ mongosmongosを有効にすることはできません。

MongoDB 700}5.0 以降では、 コマンドまたはlevel slowmssampleRatefilterラッパーdb.setProfilingLevel() メソッドを使用して データベースプロファイラーprofilelog file 、 、 、または に加えられた変更は、 に記録されます .

mongosでは、 profileレベルを次のように設定できます。

  • 0 診断ログのslowmssampleRatefilterを設定する。

  • -1 現在の設定を読み取るには

プロファイラーはデフォルトでオフになっています。

警告

プロファイリングにより、パフォーマンスが低下し、暗号化されていないクエリ データがシステム ログに公開されることがあります。プロファイラーを本番環境に設定して有効にする前に、パフォーマンスとセキュリティへの影響を慎重に検討してください。

パフォーマンス低下の可能性の詳細については、「プロファイラーのオーバーヘッド」を参照してください。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、 「サポートされていないコマンド」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

db.runCommand(
{
profile: <level>,
slowms: <threshold>,
sampleRate: <rate>,
filter: <filter expression>
}
)

このコマンドは、次のフィールドを使用します。

フィールド
タイプ
説明
profile
整数

プロファイラー レベルを設定します。 次のプロファイラー レベルが利用可能です。

0
プロファイラーはオフになっており、データは収集されません。これはデフォルトのプロファイラー レベルです。
1

プロファイラーは、 slowmsしきい値を超える操作、または指定されたフィルターに一致する操作のデータを収集します。

フィルターが設定されている場合、

  • slowmsおよびsampleRateオプションはプロファイリングには使用されません。

  • プロファイラーは、フィルターに一致する操作のみをキャプチャします。

2
プロファイラーは、すべての操作のデータを収集します。

プロファイリングはmongosでは利用できないため、 profileコマンドを使用してmongosインスタンスでプロファイリング レベルを0以外の値に設定することはできません。

slowms
整数

任意。デフォルト: 100

低速操作時間のしきい値(ミリ秒単位)。操作が実行される時間がこのしきい値より長いと、低速とみなされます。

低速操作は、MongoDB でその操作にかかった時間である workingMillis に基づいてログに記録されます。つまり、ロック待ちやフロー制御などの要因は、操作が低速操作のしきい値を超えるかどうかに影響しません。

logLevel0に設定されている場合、MongoDB は slowOpSampleRate で決定されたレートで低速操作を診断ログに記録します

logLevel 設定を引き上げると、レイテンシに関係なく、すべての操作が診断ログに表示されます。ただし、セカンダリによる低速の oplog エントリ メッセージのログ記録は除きます。セカンダリでは、低速の oplog エントリのみがログに記録されます。logLevel を引き上げても、すべての oplog エントリがログに記録されるわけではありません。

この引数は、構成オプション operationProfiling.slowOpThresholdMs と同じ設定に影響します。

sampleRate
double

任意。デフォルト: 1.0

プロファイリングまたはログに記録する必要がある低速操作の割合。sampleRate は、両端を含む 0 から 1 までの値を受け入れます。

この引数は構成オプションoperationProfiling.slowOpSampleRateと同じ設定に影響し、セカンダリの低速 oplog エントリ ログ メッセージには影響しません。

filter
オブジェクト

任意。 どの操作をプロファイリングまたはログに記録するかを決定するクエリ。

フィルター クエリの形式は次のとおりです。

{ <field1>: <expression1>, ... }

find()クエリは、クエリ<field> プロファイラー出力 内のフィールドと一致する正規の 操作であればどれでもかまいません。

この引数は、構成オプションoperationProfiling.filterと同じ設定に影響します。 filterが設定されている場合、slowms オプションとsampleRate オプションはプロファイリングおよび低速クエリログ行には使用されません。

db.getProfilingStatus()db.setProfilingLevel() shell メソッドprofileコマンドのラッパーを提供します。

profileコマンドは、プロファイラーを有効または無効にする間に影響を受けるデータベースの書込みロック(write lock)を取得します。 これは通常、短い操作です。 ロックは、 profileコマンドが完了するまで他の操作をブロックします。

mongosを介してシャーディングされたクラスターに接続すると、任意のデータベースに対してprofileコマンドを実行できます。

Tip

以下も参照してください。

プロファイリングを有効にしてログ データをフィルタリングするには、以下の手順を行います。

db.runCommand(
{
profile: 1,
filter:
{
$or:
[
{ millis: { $gte: 100 } },
{ user: "testuser@admin" }
]
}
}
)

フィルターは、次の操作のみを選択します。

  • 少なくとも100ミリ秒の長さ、または

  • testuserによって送信された

プロファイル フィルターをクリアするには、filter: "unset" オプションを指定して profile を実行します。

db.runCommand(
{
profile: 1,
filter: "unset"
}
)

この操作は、前の設定値を含むドキュメントを返します。

現在のプロファイリング レベルを表示するには、db.getProfilingStatus() を参照してください。

戻る

ping