Definición
db.setProfilingLevel(level, options)Modificado en la versión 5.0.
Para una
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 perfil con
db.setProfilingLevel()no se conservan. Al reiniciar el servidor, se restablece a0(valor predeterminado) o al valor establecido por la configuraciónoperationProfiling.mode--profileo la opción de línea de comandos.Si el el nivel del generador de perfiles de base de datos es
1o2(específicamente, el generador de perfiles de base de datos está habilitado),slowms ysampleRate afectan el comportamiento tanto del generador de perfiles comodiagnostic logdel.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.Puede especificar un filtro en las instancias y para controlar qué operaciones registra el generador de perfiles. Al especificar
mongodmongosunfilterpara el generador de perfiles, las opciones slowms y sampleRate no se utilizan para la generación de perfiles ni para las líneas de registro de consultas lentas.db.setProfilingLevel()proporciona una envoltura alrededor delprofilecomando.A partir de MongoDB,5.0 los cambios realizados en el generador de perfiles de base
leveldeslowmssampleRatedatos,, ofiltermediante elprofilecomando odb.setProfilingLevel()el método contenedor se registranlog fileen.
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") } } }
Donde:
wasEs la configuración de nivel anterior.slowmsEs la configuración slowms anterior.sampleRatees la configuración de sampleRate anterior.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 filter note campos y solo aparecen en la salida si estaban presentes en la configuración del nivel anterior.
Para ver el nivel de perfil actual,db.getProfilingStatus() consulte.
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
Habilitar el generador de perfiles y establecer el umbral de operación lenta y la frecuencia de muestreo
Los siguientes ejemplos se establecen para una mongod instancia:
el nivel de perfil
1a,la tasa de muestreo
0.42a.
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 de perfil actual,db.getProfilingStatus() consulte.
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 perfil
0a,la tasa de muestreo
0.42a.
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 de perfil actual,db.getProfilingStatus() consulte.
Configura un filtro para determinar las operaciones perfiladas
Los siguientes ejemplos se establecen para una mongod instancia:
el nivel de perfil
1a,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 de perfil actual,db.getProfilingStatus() consulte.
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 de perfil actual,db.getProfilingStatus() consulte.