Definición
db.setProfilingLevel(level, options)Modificado en la versión 5.0.
Para un
mongodEn la instancia, el método habilita, deshabilita o configura el generador de perfiles de base de datos. Este generador captura y registra datos sobre el rendimiento de las operaciones de escritura, los cursores y los comandos de base de datos enmongoduna instancia en ejecución. Si el generador de perfiles está deshabilitado, 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.Si el nivel del perfilador de base de datos es
1o2(específicamente, el perfilador de base de datos está habilitado), el slowms y sampleRate afectan el comportamiento tanto del perfilador como eldiagnostic log.Si el nivel del generador de perfiles de base de datos es
0(específicamente, el generadorde perfiles de base de datos está deshabilitado),slowms y sampleRate afectan solo al registro de diagnóstico.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.Puedes especificar un filtro tanto en la instancia
mongodcomo enmongospara controlar qué operaciones se registran mediante el perfilador. Cuando se especifica unfilterpara el perfilador, las opciones slowms y sampleRate no se usan para el perfilado y las líneas de registro de consultas lentas.db.setProfilingLevel()proporciona un contenedor alrededor del comandoprofile.A partir de MongoDB 5.0, los cambios realizados en el perfilador de base de datos
level,slowms,sampleRateofilterutilizando el comandoprofileo el método contenedordb.setProfilingLevel()se registran en ellog file.
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
El método db.setProfilingLevel() tiene la siguiente forma:
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:
Debido a que la creación de perfiles no está disponible | |||||||
documento o entero | Opcional. Acepta un entero o un documento de opciones. Si se pasa un valor entero como
|
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 del filtro anterior.noteEs una cadena 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:
el nivel de creación de perfiles a
1,el umbral de operación lenta slowms a
20milisegundos, yel sampleRate a
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().
Deshabilitar el generador de perfiles y establecer el umbral de operación lenta y la frecuencia de muestreo
Los siguientes ejemplos se establecen para una instancia mongod mongos o:
el nivel de creación de perfiles a
0,el umbral de operación lenta slowms a
20milisegundos, yel sampleRate a
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:
el nivel de creación de perfiles a
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().
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().