Definição
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ânciamongodem 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 para0(o padrão) ou o valor definido pela configuraçãooperationProfiling.modeou pela opção de linha de comando--profile.If the database profiler level is
1or2(specifically, the database profiler is enabled), the slowms and sampleRate affect the behavior of both the profiler and thediagnostic 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çãoslowms,sampleRateefilter, 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ânciamongosporquemongosnão possui nenhuma coleção nas quais o profiler possa gravar. O nívelprofiledeve ser0para uma instânciamongos.You can specify a filter on both
mongodandmongosinstances to control which operations are logged by the profiler. When you specify afilterfor the profiler, the slowms, and sampleRate options are not used for profiling and slow-query log lines.db.setProfilingLevel()provides a wrapper around theprofilecommand.A partir do MongoDB,5.0 as alterações feitas no profiler de banco
levelslowmsdesampleRatedados,, oufilterusando oprofilecomando oudb.setProfilingLevel()o método wrapper são registradaslog fileno.
Compatibilidade
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
Sintaxe
The db.setProfilingLevel() method has the following form:
db.setProfilingLevel(<level>, <options>)
Parâmetros
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:
Because profiling is not available on | |||||||
documento ou valor inteiro | Opcional. Aceita um valor inteiro ou um documento de opções. Se um valor inteiro for fornecido como argumento
|
Devoluções
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 defilter. Este campo aparece somente no resultado quandofiltertambé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().
Comportamento
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.
Exemplos
Habilite o profiler e defina o limite de operação lenta e a taxa de amostragem
Os seguintes conjuntos de exemplo para uma instância do mongod:
the profiling level to
1,the slow operation threshold slowms to
20milliseconds, andthe sampleRate to
0.42.
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().
Desative o profiler e defina o limite de operação lenta e a taxa de amostragem
O exemplo seguinte define a instância mongod ou mongos:
the profiling level to
0,the slow operation threshold slowms to
20milliseconds, andthe sampleRate to
0.42.
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().
Definir um filtro para determinar as operações perfiladas
Os seguintes conjuntos de exemplo para uma instância do mongod:
the profiling level to
1,um filtro
{ op: "query", millis: { $gt: 2000 } }de, que faz com que o profiler registre apenasqueryoperações que demoraram mais de 2 segundos.
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().
Defina um filtro sem habilitar o profiler
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().
Redefinir um filtro
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().