定義
- db.setProfilingLevel(level, options)
- バージョン 5.0 での変更。 - mongodインスタンスの場合、メソッドはデータベースプロファイラを有効化、無効化、または構成します。 プロファイラーは、実行中の- mongodインスタンスでの書き込み操作、カーソル、データベースコマンドのパフォーマンスに関するデータをキャプチャして記録します。 プロファイラーが無効の場合、このメソッドは、低速操作を診断ログに記録する方法を構成します。- 注意- db.setProfilingLevel()でプロファイリング レベルに加えられた変更は保持されません。サーバーを再起動すると、- 0(デフォルト)、または- operationProfiling.mode設定もしくは- --profileコマンドライン オプションで設定された値に戻ります。- データベースプロファイラーレベルが - 1または- 2(具体的には、データベースプロファイラーが有効な場合)である場合、slowms と sampleRate は、プロファイラーと- diagnostic logの両方の動作に影響を与えます。- データベースプロファイラー レベルが - 0(具体的には、データベースプロファイラーが無効)の場合、slowms と sampleRate は診断ログにのみ影響します。- mongosインスタンスでは、このメソッドは- slowmsの設定、- sampleRateの設定、および- filter構成設定を行い、操作を診断ログに書き込む方法を構成します。- mongosにはプロファイラーが書き込みできるコレクションがないため、- mongosインスタンスでデータベースプロファイラーを有効にすることはできません。- mongosインスタンスの- profileレベルは- 0である必要があります。- mongodインスタンスと- mongosインスタンスの両方にフィルターを指定して、プロファイラーによってログに記録する操作を制御できます。プロファイラーに- filterを指定すると、slowms オプションおよび sampleRate オプションはプロファイリングおよび低速クエリ ログ行には使用されません。- db.setProfilingLevel()は、- profileコマンドのラッパーを提供します。- MongoDB 5.0以降では、 - profileコマンドまたは- db.setProfilingLevel()ラッパー メソッドを使用してデータベースプロファイラー- level、- slowms、- sampleRate、または- filterに加えられた変更は、- log fileに記録されます。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです 
重要
このコマンドは、M0 および Flex クラスターではサポートされていません。詳細については、「 サポートされていないコマンド 」を参照してください。
- MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン 
- MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン 
構文
db.setProfilingLevel() メソッドの形式は次のとおりです。
db.setProfilingLevel(<level>, <options>) 
パラメーター
| Parameter | タイプ | 説明 | ||||||
|---|---|---|---|---|---|---|---|---|
| integer | データベースプロファイラーレベルを設定します。次のプロファイラー レベルを使用できます。 
 プロファイリングは | |||||||
| ドキュメントまたは整数 | 任意。 整数または オプションドキュメントを受け入れます。  
 | 
戻り値
このメソッドは、前の設定値を含むドキュメントを返します。
{    "was" : 2,    "slowms" : 100,    "sampleRate" : 1,    "filter" : {       "$and" : [          {             "op" : {                "$eq" : "query"             }          },          {             "millis" : {                "$gt" : 20000             }          }       ]    },    "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.",    "ok" : 1 } 
{    "was" : 0,    "slowms" : 100,    "sampleRate" : 1,    "filter" : {       "$and" : [          {             "op" : {                "$eq" : "query"             }          },          {             "millis" : {                "$gte" : 2000             }          }       ]    },    "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.",    "ok" : 1,    "$clusterTime" : {       "clusterTime" : Timestamp(1572991238, 1),       "signature" : {          "hash" : BinData(0,"hg6GnlrVhV9MAhwWdeHmHQ4T4qU="),          "keyId" : Long("6755945537557495811")       }    },    "operationTime" : Timestamp(1572991238, 1) } 
{    "was" : 0,    "slowms" : 100,    "sampleRate" : 1,    "filter" : {       "$and" : [          {             "op" : {                "$eq" : "query"             }          },          {             "millis" : {                "$gte" : 2000             }          }       ]    },    "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.",    "ok" : 1,    "operationTime" : Timestamp(1572991499, 2),    "$clusterTime" : {       "clusterTime" : Timestamp(1572991499, 2),       "signature" : {          "hash" : BinData(0,"nhCquIxUw7thlrBudXe3PnsnvP0="),          "keyId" : Long("6755946491040235540")       }    } } 
以下の条件に一致するもの。
- wasが、前のレベル設定です。
- slowmsが、前の slowms 設定です。
- sampleRateが、前の sampleRate 設定です。
- filterは、前のフィルター設定です。
- noteは、- filterの動作を説明する文字列です。このフィールドは、- filterも存在する場合にのみ出力に表示されます。
注意
filter フィールドと note フィールドは、前のレベル設定に存在していた場合にのみ出力に表示されます。
現在のプロファイリング レベルを表示するには、db.getProfilingStatus() を参照してください。
動作
警告
プロファイリングにより、パフォーマンスが低下し、暗号化されていないクエリ データがシステム ログに公開されることがあります。プロファイラーを本番環境に設定して有効にする前に、パフォーマンスとセキュリティへの影響を慎重に検討してください。
パフォーマンス低下の可能性の詳細については、「プロファイラーのオーバーヘッド」を参照してください。
例
プロファイラーの有効化および低速操作のしきい値とサンプルレートの設定
次の例では、以下の値を mongodインスタンスに設定します。
- プロファイリング レベルを - 1に設定し、
- 低速操作のしきい値 slowmsを - 20ミリ秒に設定し、
- sampleRate を - 0.42に設定します。
db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 }) 
この操作は、前の設定値を含むドキュメントを返します。
現在のプロファイリング レベルを表示するには、db.getProfilingStatus() を参照してください。
プロファイラーの無効化および低速操作のしきい値とサンプルレートの設定
次の例では、以下の値を mongod インスタンスまたは mongos インスタンス用に設定します。
- プロファイリング レベルを - 0に設定し、
- 低速操作のしきい値 slowmsを - 20ミリ秒に設定し、
- sampleRate を - 0.42に設定します。
db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 }) 
この操作は、前の設定値を含むドキュメントを返します。
現在のプロファイリング レベルを表示するには、db.getProfilingStatus() を参照してください。
プロファイルされた操作を決定するためにフィルターを設定する
次の例では、以下の値を mongodインスタンスに設定します。
- プロファイリング レベルを - 1に設定し、
- { op: "query", millis: { $gt: 2000 } }のフィルター。これにより、プロファイラーは、 2秒以上かかった- query操作のみを記録します。
db.setProfilingLevel( 1, { filter: { op: "query", millis: { $gt: 2000 } } } ) 
この操作は、前の設定値を含むドキュメントを返します。
現在のプロファイリング レベルを表示するには、db.getProfilingStatus() を参照してください。
フィルターの設定解除
プロファイル フィルターをクリアするには、filter: "unset" オプションを指定して db.setProfilingLevel() を実行します。
db.setProfilingLevel( 1, { filter: "unset" } ) 
この操作は、前の設定値を含むドキュメントを返します。
現在のプロファイリング レベルを表示するには、db.getProfilingStatus() を参照してください。