Definición
db.setProfilingLevel(level, options)Cambiado en la versión 5.0.
En una
mongodinstancia, el método habilita, deshabilita o configura el perfilador de base de datos. El perfilador captura y registra datos sobre el rendimiento de las operaciones de escritura, cursores y comandos de base de datos en una instancia activa demongod. Si el perfilador está desactivado, el método configura cómo se registran las operaciones lentas en el registro de diagnóstico.Nota
Los cambios realizados en el nivel de perfilado con
db.setProfilingLevel()no persisten. Cuando el servidor se reinicia, vuelve a0(el valor por defecto), o al valor establecido mediante la configuraciónoperationProfiling.modeo la opción de línea de comandos--profile.If the database profiler level is
1or2(specifically, the database profiler is enabled), the slowms and sampleRate affect the behavior of both the profiler and thediagnostic log.If the database profiler level is
0(specifically, database profiler is disabled), the slowms and sampleRate, affect only the diagnostic log.Con las instancias
mongos, el método establece las configuracionesslowms,sampleRateyfilter, que determinan cómo se registran las operaciones en el registro de diagnóstico. No es posible activar el perfilador de base de datos en unamongosinstancia porquemongosno tiene ninguna colección en la que el perfilador pueda guardar. El nivelprofiledebe ser0para una instanciamongos.You can specify a filter on both
mongodandmongosinstances to control which operations are logged by the profiler. When you specify afilterfor the profiler, the slowms, and sampleRate options are not used for profiling and slow-query log lines.db.setProfilingLevel()provides a wrapper around theprofilecommand.A partir de MongoDB,5.0 los cambios realizados en el perfilador de la base
levelslowmsdesampleRatedatos,, ofiltermediante elprofilecomando odb.setProfilingLevel()el método de envoltura se registran enlog fileel.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
- MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Importante
Este comando no es compatible con los clústeres M0 y Flex. Para obtener más información, consulta Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
The db.setProfilingLevel() method has the following form:
db.setProfilingLevel(<level>, <options>)
Parámetros
Parameter | Tipo | Descripción | ||||||
|---|---|---|---|---|---|---|---|---|
entero | Configura el nivel del perfilador de la base de datos. Los siguientes niveles de perfilador están disponibles:
Because profiling is not available on | |||||||
documento o número entero | Optional. Accepts an integer or an options document. If an integer value is passed as the
|
Devuelve
El método devuelve un documento que contiene los valores anteriores de la configuración.
{ "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") } } }
Dónde:
wases la configuración de nivel anterior.slowmses el ajuste anterior slowms.sampleRatees el anterior sampleRate ajuste.filteres la configuración anterior de filtro.notees una string que explica el comportamiento defilter. Este campo solo aparece en la salida cuandofiltertambién está presente.
Nota
Los campos filter y note solo aparecen en la salida si estaban presentes en la configuración anterior de nivel.
Para ver el nivel actual de creación de perfiles, consulte db.getProfilingStatus().
Comportamiento
Advertencia
El perfilado puede degradar el rendimiento y exponer datos de la consulta no cifrados en el registro del sistema. Considera detenidamente cualquier implicación de rendimiento y seguridad antes de configurar y activar el perfilador en una implementación de producción.
Consulte Sobrecarga del perfilador para obtener más información sobre la posible degradación del rendimiento.
Ejemplos
Activar el perfilador y establecer el umbral y la tasa de muestreo de operaciones lentas
El siguiente ejemplo establece para una instancia de mongod:
the profiling level to
1,the slow operation threshold slowms to
20milliseconds, andthe sampleRate to
0.42.
db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 })
La operación devuelve un documento con los valores anteriores de la configuración.
Para ver el nivel actual de creación de perfiles, consulte db.getProfilingStatus().
Desactivar el perfilador y Configurar el Umbral de Operación Lenta y la Tasa de Muestreo
El siguiente ejemplo establece para una mongod o mongos instancia:
the profiling level to
0,the slow operation threshold slowms to
20milliseconds, andthe sampleRate to
0.42.
db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 })
La operación devuelve un documento con los valores anteriores de la configuración.
Para ver el nivel actual de creación de perfiles, consulte db.getProfilingStatus().
Configura un filtro para determinar las operaciones perfiladas
El siguiente ejemplo establece para una instancia de mongod:
the profiling level to
1,un filtro
{ op: "query", millis: { $gt: 2000 } }de, que hace que el generador de perfiles solo registrequeryoperaciones que tardaron más de 2 segundos.
db.setProfilingLevel( 1, { filter: { op: "query", millis: { $gt: 2000 } } } )
La operación devuelve un documento con los valores anteriores de la configuración.
Para ver el nivel actual de creación de perfiles, consulte db.getProfilingStatus().
Establecer un filtro sin habilitar el perfilador
You can set a filter without enabling the database profiler. The following example uses a filter with a profiling level of 0.
db.setProfilingLevel( 0, { filter: { op: "query", millis: { $gt: 2000 } } } )
Dado que el nivel de perfilado es 0, el perfilador está deshabilitado y no registra las operaciones coincidentes en la colección del perfilador. El filtro sigue aplicándose al registro de diagnóstico.
La operación devuelve un documento con los valores anteriores de la configuración.
Para ver el nivel actual de creación de perfiles, consulte db.getProfilingStatus().
Desactivar un filtro
Para borrar un filtro de perfil, ejecute db.setProfilingLevel() con la opción filter: "unset".
db.setProfilingLevel( 1, { filter: "unset" } )
La operación devuelve un documento con los valores anteriores de la configuración.
Para ver el nivel actual de creación de perfiles, consulte db.getProfilingStatus().