A questão é tão básica quanto simples ... Como você registra todas as consultas em um arquivo de log capaz de "cauda" no mongodb?
Eu tentei:
- definindo o nível de criação de perfil
- definir o parâmetro ms lento começando
- mongod com a opção -vv
O /var/log/mongodb/mongodb.log continua mostrando apenas o número atual de conexões ativas ...
mongod -vv
trabalhou para mimRespostas:
Você pode registrar todas as consultas:
Fonte: http://docs.mongodb.org/manual/reference/method/db.setProfilingLevel/
db.setProfilingLevel(2)
significa "registrar todas as operações".fonte
db.setProfilingLevel(2,-1)
system.profile
coleção.db.system.profile.find().pretty()
não dá nada para mimAcabei resolvendo isso iniciando o mongod assim (martelado e feio, sim ... mas funciona para o ambiente de desenvolvimento):
Isso permite a criação de perfil e define o limite para "consultas lentas" como 1 ms, fazendo com que todas as consultas sejam registradas como "consultas lentas" no arquivo:
Agora eu recebo saídas de log contínuas usando o comando:
Um log de exemplo:
fonte
profile=1
eslowms=1
linhas/etc/mongodb.conf
?--profile=2
de/etc/mongodb.conf
acordo com os documentos oficiais do Mongo, todas as operações serão registradas.db.setProfilingLevel(level,slowms)
. Por exemplo:db.setProfilingLevel(2,1)
definirá o nível como 2 e o limite de consulta lento será 1ms.Porque sua primeira resposta do google ...
Para a versão 3
http://docs.mongodb.org/manual/reference/method/db.setLogLevel/
fonte
MongoDB
possui um recurso sofisticado de criação de perfil. O log acontece nasystem.profile
coleção. Os logs podem ser vistos em:Existem 3 níveis de log ( origem ):
Para ver em que nível de perfil o banco de dados está sendo executado, use
e para ver o status
Para alterar o status da criação de perfil, use o comando
Onde
level
refere-se ao nível de criação de perfil emilliseconds
é o ms de qual duração as consultas precisam ser registradas. Para desativar o log, useA consulta para procurar na coleção de perfis do sistema todas as consultas que levaram mais de um segundo, ordenadas por carimbo de data e hora decrescente, será
fonte
Eu criei uma ferramenta de linha de comando para ativar a atividade do criador de perfil e ver os logs de uma maneira capaz de "cauda" : "mongotail" .
Mas o recurso mais interessante (também como
tail
) é ver as alterações em "tempo real" com a-f
opção e, ocasionalmente, filtrar o resultado comgrep
para encontrar uma operação específica.Consulte as instruções de documentação e instalação em: https://github.com/mrsarm/mongotail
fonte
Depois de perfil nível é definido usando
db.setProfilingLevel(2)
.O comando abaixo imprimirá a última consulta executada.
Você também pode alterar o limite (5) para ver menos / mais consultas.
$ nin - filtrará as consultas de perfil e indexação
Além disso, use a projeção de consulta {'query': 1} para visualizar apenas o campo de consulta
Logs com apenas projeção de consulta
fonte
se você deseja que as consultas sejam registradas no arquivo de log mongodb, é necessário definir o nível do log e a criação de perfil, como por exemplo:
(consulte https://docs.mongodb.com/manual/reference/method/db.setLogLevel )
Definir apenas a criação de perfil não teria as consultas registradas no arquivo; portanto, você só pode obtê-lo em
fonte
Os dados do criador de perfil são gravados em uma coleção no seu banco de dados, não no arquivo. Consulte http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/
Eu recomendaria usar o serviço MMS da 10gen e alimentar os dados do perfil de desenvolvimento, onde você pode filtrar e classificar na interface do usuário.
fonte
Eu acho que, embora não seja elegante, o oplog pode ser parcialmente usado para esse fim: registra todas as gravações - mas não as leituras ...
Você precisa ativar a replicação, se eu estiver certo. As informações são desta resposta desta pergunta: Como ouvir alterações em uma coleção do MongoDB?
fonte
Definir o nível de perfil como 2 é outra opção para registrar todas as consultas.
fonte
Eu recomendo verificar mongosniff. Esta ferramenta pode fazer tudo o que você deseja e muito mais. Especialmente, ele pode ajudar a diagnosticar problemas com sistemas mongo de maior escala e como as consultas estão sendo roteadas e de onde elas vêm, uma vez que funciona ouvindo sua interface de rede para todas as comunicações relacionadas ao mongo.
http://docs.mongodb.org/v2.2/reference/mongosniff/
fonte
Eu escrevi um script que imprimirá o log system.profile em tempo real, à medida que as consultas chegarem. É necessário ativar o log primeiro, conforme indicado em outras respostas. Eu precisava disso porque estou usando o Windows Subsystem para Linux, cuja cauda ainda não funciona.
https://github.com/dtruel/mongo-live-logger
fonte
Então
fonte
Isso foi solicitado há muito tempo, mas isso ainda pode ajudar alguém:
O criador de perfil do MongoDB registra todas as consultas no system.profile de coleção limitada . Veja isto: criador de perfil de banco de dados
--profile=2
opção que permite registrar todas as consultas OU se as instâncias mongod já estiverem em execução, a partir de mongoshell, executedb.setProfilingLevel(2)
após selecionar o banco de dados. (pode ser verificado pordb.getProfilingLevel()
, que deve retornar2
)tail -f ../logs/mongologs.txt
. Esse script pode ser iniciado em segundo plano e registrará toda a operação no banco de dados no arquivo.Meu código para o cursor disponível para a coleção system.profile está em nodejs; ele registra todas as operações junto com as consultas que acontecem em todas as coleções do MyDb:
Para o cursor disponível no python usando o pymongo, consulte o seguinte código que filtra o MyCollection e insere apenas a operação:
Nota: O cursor disponível só funciona com coleções limitadas. Ele não pode ser usado para registrar operações em uma coleção diretamente; em vez disso, use o filtro:
'ns': 'MyDb.MyCollection'
Nota: Entendo que os códigos nodejs e python acima podem não ser de grande ajuda para alguns. Acabei de fornecer os códigos para referência.
Use este link para encontrar documentação para o cursor disponível na sua escolha de idioma / driver . Drivers Mongodb
Outro recurso que eu adicionei após este logrotate .
fonte
Experimente este pacote para ajustar todas as consultas (sem operações oplog): https://www.npmjs.com/package/mongo-tail-queries
(Isenção de responsabilidade: escrevi este pacote exatamente para essa necessidade)
fonte