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.Se o nível do profiler de banco de dados for
1ou2(especificamente, o profiler de banco de dados estiver ativado), os slowms e sampleRate afetarão o comportamento do profiler ediagnostic logdo.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 registro 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 e para controlar quais operações são registradas pelo profiler. Quando você especifica
mongodmongosumfilterpara o profiler, as opções slowms e sampleRate não são usadas para perfilar e linhas de registro de consulta lenta.db.setProfilingLevel()fornece um wrapper para oprofilecomando.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
O método tem o seguinte db.setProfilingLevel() formulário:
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 | |||||||
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:
o nível de perfilação
1para,o limite de operação lenta slowms para
20milissegundos, eo sampleRate
0.42para.
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 perfilação
0para,o limite de operação lenta slowms para
20milissegundos, eo sampleRate
0.42para.
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 perfilação
1para,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
Você pode definir um filter sem habilitar o profiler de banco de dados. O exemplo a seguir usa um filtro com um nível de perfil 0 de.
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().