Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

db.setProfilingLevel() (método mongosh)

db.setProfilingLevel(level, options)

Modificado en la versión 5.0.

Para un 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 perfilado con db.setProfilingLevel() no persisten. Cuando el servidor se reinicia, vuelve a 0 (el valor por defecto), o al valor establecido mediante la configuración operationProfiling.mode o la opción de línea de comandos --profile.

Si el nivel del perfilador de base de datos es 1 o 2 (específicamente, el perfilador de base de datos está habilitado), el slowms y sampleRate afectan el comportamiento tanto del perfilador como el diagnostic 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 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.

Puedes especificar un filtro tanto en la instancia mongod como en mongos para controlar qué operaciones se registran mediante el perfilador. Cuando se especifica un filter para 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 comando profile.

A partir de MongoDB 5.0, los cambios realizados en el perfilador de base de datos level, slowms, sampleRate o filter utilizando el comando profile o el método contenedor db.setProfilingLevel() se registran en el log file.

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.

Cuando se establece en el nivel 2, el perfilador ignora los valores proporcionados por el usuario para slowms y filter.

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 lento, en milisegundos. Las operaciones que se ejecutan por más tiempo que este umbral se consideran lentas.

Las operaciones lentas se registran en función de workingMillis, que es la cantidad de tiempo que MongoDB dedica a trabajar en esa operación. Esto significa que factores como la espera de bloqueos y el control de flujo no afectan si una operación supera el umbral de operación lenta.

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.

Para mongos instancias, la configuración solo afecta al registro de diagnósticos y no al perfilador, ya que la creación de perfiles no está disponible en mongos.

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.

Para mongos instancias, la configuración solo afecta al registro de diagnósticos y no al perfilador, ya que la creación de perfiles no está disponible en mongos.

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

Tipo: objeto

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

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

Para mongos instancias, la configuración solo afecta al registro de diagnósticos y no al perfilador, ya que la creación de perfiles no está disponible en mongos.

A partir de MongoDB 8.0, puede especificar workingMillis como un parámetro de filtro para registrar operaciones según la cantidad de tiempo que MongoDB dedica a esa operación.

Para obtener un ejemplo de un filtro utilizado para controlar las operaciones registradas, consulta Establecer un filtro para determinar las operaciones registradas en el perfil.

Cuando se establece un filtro de perfilado, las opciones slowms y sampleRate no afectan el registro de diagnósticos ni al perfilador.

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:

  • was es la configuración de nivel anterior.

  • slowms es el ajuste anterior slowms.

  • sampleRate es el anterior sampleRate ajuste.

  • 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 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().

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.

El siguiente ejemplo establece para una instancia de mongod:

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().

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

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().

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 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 actual de creación de perfiles, consulte db.getProfilingStatus().

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().

Volver

db.setLogLevel

En esta página