Docs Menu
Docs Home
/ /
Databases

db.setProfilingLevel() (método mongosh)

db.setProfilingLevel(level, options)

Modificado en la versión 5.0.

Para una mongod En 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 en mongod una 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 a 0 (valor predeterminado) o al valor establecido por la configuración operationProfiling.mode --profile o la opción de línea de comandos.

Si el nivel del generador de perfiles de base de datos es 1 o 2 (específicamente, el generador de perfiles de base de datos está habilitado),slowms ysampleRate afectan el comportamiento tanto del generador de perfiles como diagnostic log de.

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 configuraciones slowms, sampleRate y filter, 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 una mongos instancia porque mongos no tiene ninguna colección en la que el perfilador pueda guardar. El nivel profile debe ser 0 para una instancia mongos.

Puede especificar un filtro en las instancias y para controlar qué operaciones registra el generador de perfiles. Al especificar mongod mongos un filter para 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 del profile comando.

A partir de MongoDB,5.0 los cambios realizados en el generador de perfiles de base level deslowms sampleRatedatos,, o filter mediante el profile comando o db.setProfilingLevel() el método contenedor se registran log file en.

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.

El método db.setProfilingLevel() tiene la siguiente forma:

db.setProfilingLevel(<level>, <options>)
Parameter
Tipo
Descripción

entero

Configura el nivel del perfilador de la base de datos. Los siguientes niveles de perfilador están disponibles:

0
El perfilador está desactivado y no recopila ningún dato. Este es el nivel por defecto del perfilador.
1

El perfilador recopila datos para operaciones que exceden el umbral slowms o coinciden con un filtro especificado.

Cuando se establece un filtro:

  • Las opciones slowms y sampleRate no se utilizan para el perfilado.

  • El perfilador solo captura las operaciones que coinciden con el filtro.

2
El perfilador recopila datos de todas las operaciones.

Debido a que la creación de perfiles no está disponible mongos en, db.setProfilingLevel() no se puede utilizar para establecer el nivel de creación de perfiles en un valor distinto de 0 en una mongos instancia.

documento o entero

Opcional. Acepta un entero o un documento de opciones. Si se pasa un valor entero como options argumento en lugar de un documento, el valor se asigna a slowms. Están disponibles las siguientes opciones:

Default: 100
Type: integer

El umbral de tiempo de operación lenta, en milisegundos. Las operaciones que se ejecutan durante más tiempo que este umbral se consideran lentas.

Cuando logLevel se establece en 0, MongoDB registra las operaciones lentas en el registro de diagnóstico a una tasa determinada por slowOpSampleRate.

Con configuraciones más altas de logLevel, todas las operaciones aparecen en el registro de diagnóstico independientemente de su latencia, con la siguiente excepción: el registro de mensajes de entrada de oplog lentos por parte de los secundarios. Los secundarios solo registran las entradas de oplog lentas; aumentar el logLevel no registra todas las entradas de oplog.

Para las instancias mongod, la configuración afecta tanto al registro de diagnóstico como, si está activado, al perfilador.

En el caso de instancias, la configuración afecta únicamente al registro de diagnóstico y no al generador de perfiles, ya que la creación de perfiles no está mongos disponible mongos en.

Este argumento afecta la misma configuración que la opción del archivo de slowOpThresholdMs configuración.

Default: 1.0
Type: double

La fracción de operaciones lentas que se deben perfilar o registrar. sampleRate acepta valores entre 0 y,1 inclusive.

Para las instancias mongod, la configuración afecta tanto al registro de diagnóstico como, si está activado, al perfilador.

En el caso de instancias, la configuración afecta únicamente al registro de diagnóstico y no al generador de perfiles, ya que la creación de perfiles no está mongos disponible mongos en.

Este argumento afecta la misma configuración que la opción de slowOpSampleRate configuración.

Tipo: objeto

Una expresión de filtro que controla qué operaciones se perfilan y registran. El campo de la expresión de filtro puede ser cualquier campo de la salida del perfilador.

Para las instancias mongod, la configuración afecta tanto al registro de diagnóstico como, si está activado, al perfilador.

En el caso de instancias, la configuración afecta únicamente al registro de diagnóstico y no al generador de perfiles, ya que la creación de perfiles no está mongos disponible mongos en.

Para ver un ejemplo de un filtro utilizado para controlar operaciones registradas, consulte Establecer un filtro para determinar operaciones perfiladas.

Cuando se configura un filtro de creación de perfiles, las opciones slowms y sampleRate no afectan el registro de diagnóstico ni el generador de perfiles.

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:

  • was Es la configuración de nivel anterior.

  • slowms Es la configuración slowms anterior.

  • sampleRate es la configuración de sampleRate anterior.

  • filter Es la configuración del filtro anterior.

  • note Es una cadena que explica el comportamiento de filter. Este campo solo aparece en la salida cuando filter tambié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.

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.

Los siguientes ejemplos se establecen para una mongod instancia:

  • el nivel de perfil 1a,

  • El umbral de operación lenta se reduce a 20 milisegundos, y

  • la tasa de muestreo 0.42 a.

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.

Los siguientes ejemplos se establecen para una instancia mongod mongos o:

  • el nivel de perfil 0a,

  • El umbral de operación lenta se reduce a 20 milisegundos, y

  • la tasa de muestreo 0.42 a.

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.

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 registre query operaciones 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.

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.

Volver

db.setLogLevel

En esta página