db.setProfilingLevel()
項目一覧
定義
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 配置のためのフルマネージド サービスです
重要
このコマンドは、M 0 、M 2 、M 5クラスターではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。
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" : NumberLong("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" : NumberLong("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()
を参照してください。