Definição
db.setProfilingLevel(level, options)Alterado na versão 5.0.
Para uma instância
mongod, o método habilita, desabilita ou configura o Profiler de banco de dados. O profiler capta 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 log 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.Se o nível do analisador de banco de dados for
1ou2(especificamente, o analisador de banco de dados estiver habilitado), os slowms, sampleRate afetarão o comportamento do analisador e dodiagnostic log.Se o nível do profiler de banco de dados for
0(especificamente, o profiler de banco de dados estiver desabilitado), os slowms e sampleRate afetarão somente o log de diagnóstico.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.Você pode especificar um filtro nas instâncias
mongodemongospara controlar quais operações são registradas pelo profiler. Quando você especifica umfilterpara o profiler, as opções slowms e sampleRate não são usadas para perfilar e linhas de log de query lenta.db.setProfilingLevel()fornece um encapsulador em torno do comandoprofile.A partir do MongoDB 5.0, as alterações feitas no profiler de banco de dados
level,slowms,sampleRateoufilterusando o comandoprofileou o método encapsuladordb.setProfilingLevel()são registradas nolog file.
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
O método db.setProfilingLevel() tem o seguinte formato:
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:
Como a criação de perfil não está disponível em | |||||||
documento ou valor inteiro | Opcional. Aceita um valor inteiro ou um documento de opções. Se um valor inteiro for fornecido como
|
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:
o nível de perfil para
1,o limite de operação lenta slowms para
20milissegundos, eo sampleRate para
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:
o nível de perfil para
0,o limite de operação lenta slowms para
20milissegundos, eo sampleRate para
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:
o nível de perfil para
1,um filtro de
{ op: "query", millis: { $gt: 2000 } }, 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().
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().