プロファイル
定義
profile
バージョン 5.0 での変更。
mongod
インスタンスの場合、 コマンドはデータベースプロファイラを有効化、無効化、または構成します。 プロファイラーは、実行中のmongod
インスタンスでの書き込み操作、カーソル、データベースコマンドのパフォーマンスに関するデータをキャプチャして記録します。 プロファイラーが無効の場合、 コマンドは、低速操作を診断ログに記録する方法を構成します。mongod
では、データベースプロファイラー レベルが2
の場合、プロファイラーとdiagnostic log
で完全なログ記録が有効になります。データベースプロファイラー レベル
1
では、次の設定によってプロファイラーとdiagnostic log
の両方が変更されます。データベースプロファイラー レベルが
0
の場合、データベースプロファイラーは無効になります。 レベル0
では、次の設定によって診断ログのみが変更されます。mongos
インスタンスの場合、このコマンドは操作を診断ログに書き込む方法のみを構成します。 にはプロファイラーが書き込みできるコレクションがないため、 インスタンスで データベースプロファイラmongos
mongos
を有効にすることはできません。MongoDB 700}5.0 以降では、 コマンドまたは
level
slowms
sampleRate
filter
ラッパーdb.setProfilingLevel()
メソッドを使用して データベースプロファイラーprofile
log file
、 、 、または に加えられた変更は、 に記録されます .mongos
では、profile
レベルを次のように設定できます。0
診断ログのslowms
、sampleRate
、filter
を設定する。-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 | 整数 | プロファイラー レベルを設定します。 次のプロファイラー レベルが利用可能です。
プロファイリングは | |
slowms | 整数 | 任意。デフォルト: 100 低速操作時間のしきい値(ミリ秒単位)。操作が実行される時間がこのしきい値より長いと、低速とみなされます。 低速操作は、MongoDB でその操作にかかった時間である
この引数は、構成オプション | |
sampleRate | double | 任意。デフォルト: 1.0 プロファイリングまたはログに記録する必要がある低速操作の割合。 この引数は構成オプション | |
filter | オブジェクト | 任意。 どの操作をプロファイリングまたはログに記録するかを決定するクエリ。 フィルター クエリの形式は次のとおりです。
この引数は、構成オプション |
db.getProfilingStatus()
とdb.setProfilingLevel()
shell メソッドはprofile
コマンドのラッパーを提供します。
動作
profile
コマンドは、プロファイラーを有効または無効にする間に影響を受けるデータベースの書込みロック(write lock)を取得します。 これは通常、短い操作です。 ロックは、 profile
コマンドが完了するまで他の操作をブロックします。
mongos
を介してシャーディングされたクラスターに接続すると、任意のデータベースに対してprofile
コマンドを実行できます。
例
フィルタリングを有効にする
プロファイリングを有効にしてログ データをフィルタリングするには、以下の手順を行います。
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()
を参照してください。