Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

db.setProfilingLevel() (método mongosh)

db.setProfilingLevel(level, options)

Alterado na versão 5.0.

Para uma instância do mongod, o método habilita, desabilita ou configura o Profiler de banco de dados. O profiler captura e registra dados sobre o desempenho de operações de gravação, cursores e comandos de banco de dados em uma instância mongod em execução. Se o profiler estiver desabilitado, o método configurará como as operações lentas serão registradas no registro de diagnóstico.

Observação

As alterações feitas no nível de profiling com db.setProfilingLevel() não persistem. Quando o servidor é reiniciado, ele reverte para 0 (o padrão) ou o valor definido pela configuração operationProfiling.mode ou pela opção de linha de comando --profile.

If the database profiler level is 1 or 2 (specifically, the database profiler is enabled), the slowms and sampleRate affect the behavior of both the profiler and the diagnostic log.

If the database profiler level is 0 (specifically, database profiler is disabled), the slowms and sampleRate, affect only the diagnostic log.

Com instâncias mongos , o método define os ajustes de configuração slowms, sampleRate e filter, que definem como as operações são gravadas no registro de diagnóstico. Não é possível ativar o profiler de banco de dados em uma instância mongos porque mongos não possui nenhuma coleção nas quais o profiler possa gravar. O nível profile deve ser 0 para uma instância mongos .

You can specify a filter on both mongod and mongos instances to control which operations are logged by the profiler. When you specify a filter for the profiler, the slowms, and sampleRate options are not used for profiling and slow-query log lines.

db.setProfilingLevel() provides a wrapper around the profile command.

Starting in MongoDB 5.0, changes made to the database profiler level, slowms, sampleRate, or filter using the profile command or db.setProfilingLevel() wrapper method are recorded in the log file.

Esse método está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Importante

Esse comando não é suportado em clusters M0 e Flex. Para obter mais informações, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

The db.setProfilingLevel() method has the following form:

db.setProfilingLevel(<level>, <options>)
Parâmetro
Tipo
Descrição

inteiro

Configura o nível do perfil do banco de dados. Os seguintes níveis de analisador estão disponíveis:

0

O analisador está desligado e não coleta dados. Este é o nível do analisador padrão.

1

O profiler coleta dados para operações que excedem o limite de slowms ou correspondem a um filtro especificado.

Quando um filtro é definido:

  • As opções slowms e sampleRate não são usadas para análise.

  • O profiler só captura operações que correspondam ao filtro.

2

O analisador coleta dados para todas as operações.

Ao definir para o nível 2, o profiler ignora os valores fornecidos pelo usuário para slowms e filter.

Because profiling is not available on mongos, db.setProfilingLevel() cannot be used to set the profiling level to a value other than 0 on a mongos instance.

documento ou valor inteiro

Opcional. Aceita um valor inteiro ou um documento de opções. Se um valor inteiro for fornecido como argumento options em vez de um documento, o valor será atribuído a slowms. As seguintes opções estão disponíveis:

slowms

Default: 100
Type: integer

O limite do tempo de operação lenta, em milissegundos. As operações executadas por mais tempo que esse limite são consideradas lentas.

As operações lentas são registradas com base em workingMillis, que é a quantidade de tempo que o MongoDB gasta trabalhando nessa operação. Isso significa que fatores como a espera por bloqueios e o controle de fluxo não afetam o fato de uma operação exceder o limite de operação lenta.

Quando logLevel é definido como 0, o MongoDB registra operações lentas no log de diagnóstico a uma taxa determinada por slowOpSampleRate.

Em configurações logLevel mais altas, todas as operações aparecem no log de diagnóstico, independentemente de sua latência, com a seguinte exceção: o log de mensagens de entrada lentas de oplog pelos secundários. Os secundários registram apenas as entradas lentas do oplog; aumentar o logLevel não registra todas as entradas do oplog.

Para instâncias mongod, a configuração afeta o registro de diagnóstico e, se ativado, o criador de perfil.

Para instâncias mongos, a configuração afeta somente o registro de diagnóstico e não o profiler porque o profiling não está disponível emmongos.

Esse argumento afeta a mesma configuração da opção slowOpThresholdMs do arquivo de configuração.

sampleRate

Padrão: 1.0
Tipo: double

A fração de operações lentas que devem ser analisadas ou registradas. sampleRate aceita valores entre 0 e 1, inclusive.

Para instâncias mongod, a configuração afeta o registro de diagnóstico e, se ativado, o criador de perfil.

Para instâncias mongos, a configuração afeta somente o registro de diagnóstico e não o profiler porque o profiling não está disponível emmongos.

Este argumento afeta a mesma configuração que a opção de configuração slowOpSampleRate.

filtro, filtro

Tipo: objeto

Uma expressão de filtro que controla quais operações são perfiladas e registradas. O campo na expressão de filtro pode ser qualquer campo na saída do profiler.

Para instâncias mongod, a configuração afeta o registro de diagnóstico e, se ativado, o criador de perfil.

Para instâncias mongos, a configuração afeta somente o registro de diagnóstico e não o profiler porque o profiling não está disponível emmongos.

A partir do MongoDB 8.0, você pode especificar workingMillis como um parâmetro de filtro para registrar operações com base no tempo que o MongoDB passa trabalhando nessa operação.

Para obter um exemplo de um filtro usado para controlar operações registradas, consulte Definir um filtro para determinar operações perfiladas.

Quando um filtro de profiling é definido, as opções slowms e sampleRate não afetam o registro de diagnóstico ou o profiler.

O método retorna um documento que contém os valores anteriores das configurações.

{
"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")
}
}
}

Onde:

  • was é a configuração deanterior de nível.

  • slowms é a configuração de anterior de slowms.

  • sampleRate é a configuração anterior de sampleRate.

  • filter é a configuração anterior de filtro.

  • note é uma string explicando o comportamento de filter. Este campo aparece somente no resultado quando filter também está presente.

Observação

Os campos filter e note só aparecem na saída se estiverem presentes na configuração de nível anterior.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

Aviso

A análise pode degradar o desempenho e expor dados de query não criptografados no registro do sistema. Considere cuidadosamente quaisquer implicações de desempenho e segurança antes de configurar e habilitar o analisador em um sistema de produção.

Consulte Sobrecarga do criador de perfil para obter mais informações sobre a possível degradação do desempenho.

Os seguintes conjuntos de exemplo para uma instância do mongod:

db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 })

A operação retorna um documento com os valores anteriores para as configurações.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

O exemplo seguinte define a instância mongod ou mongos:

db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 })

A operação retorna um documento com os valores anteriores para as configurações.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

Os seguintes conjuntos de exemplo para uma instância do mongod:

  • the profiling level to 1,

  • a filter of { op: "query", millis: { $gt: 2000 } }, which causes the profiler to only record query operations that took longer than 2 seconds.

db.setProfilingLevel( 1, { filter: { op: "query", millis: { $gt: 2000 } } } )

A operação retorna um documento com os valores anteriores para as configurações.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

You can set a filter without enabling the database profiler. The following example uses a filter with a profiling level of 0.

db.setProfilingLevel( 0, { filter: { op: "query", millis: { $gt: 2000 } } } )

Como o nível de perfil é 0, o profiler está desativado e não registra operações correspondentes na coleção do profiler. O filtro ainda se aplica ao log de diagnóstico.

A operação retorna um documento com os valores anteriores para as configurações.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().

Para limpar um filtro de perfil, execute db.setProfilingLevel() com a opção filter: "unset".

db.setProfilingLevel( 1, { filter: "unset" } )

A operação retorna um documento com os valores anteriores para as configurações.

Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().