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.Si el nivel del perfilador de base de datos es
1o2(específicamente, el perfilador de base de datos está habilitado),slowms y sampleRate afectan el comportamiento tanto del perfilador 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.Puedes especificar un filtro en las instancias y para controlar qué operaciones registra el generador de perfiles. Cuando especificas
mongodmongosunafilterinstancia para el generador de perfiles, las opciones slowms y sampleRate no se utilizan para las líneas de registro de perfiles y consultas lentas.db.setProfilingLevel()proporciona un envoltorio alrededor delprofilecomando.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
El método tiene la siguiente db.setProfilingLevel() 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 número entero | Opcional. Acepta un número 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 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:
el nivel de perfilado
1a,la frecuencia de muestreo 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().
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:
el nivel de perfilado
0a,la frecuencia de muestreo 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 perfilado
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 actual de creación de perfiles, consulte db.getProfilingStatus().
Establecer un filtro sin habilitar el perfilador
Puede establecer un filter sin habilitar el generador de perfiles de la base de datos. El siguiente ejemplo utiliza un filtro con un nivel de perfilado 0 de.
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().