199 votes

MongoDB enregistre toutes les requêtes

La question est aussi basique qu'elle est simple... Comment enregistrer toutes les requêtes dans un fichier journal "tail" dans mongodb ?

J'ai essayé :

  • définir le niveau de profilage
  • paramétrage du démarrage du paramètre slow ms
  • mongod avec l'option -vv

Le fichier /var/log/mongodb/mongodb.log continue d'afficher uniquement le nombre actuel de connexions actives...

15voto

DariusNica Points 91

Si vous voulez que les requêtes soient enregistrées dans le fichier journal de mongodb, vous devez définir les deux paramètres suivants le niveau de journalisation et le profilage, comme par exemple :

db.setLogLevel(1)
db.setProfilingLevel(2)

(voir https://docs.mongodb.com/manual/reference/method/db.setLogLevel )

Si vous ne définissez que le profilage, les requêtes ne seront pas enregistrées dans le fichier, vous ne pourrez donc les obtenir qu'à partir de

db.system.profile.find().pretty()

11voto

Une fois que le niveau de profilage est défini à l'aide de db.setProfilingLevel(2) .

La commande ci-dessous va imprimer la dernière requête exécutée.
Vous pouvez également modifier la limite(5) pour voir moins/plus de requêtes.
$nin - filtrera les requêtes de profil et d'index.
De même, utilisez la projection de la requête {'query':1} pour ne visualiser que le champ de la requête.

db.system.profile.find(
{ 
    ns: { 
        $nin : ['meteor.system.profile','meteor.system.indexes']
    }
} 
).limit(5).sort( { ts : -1 } ).pretty()

Journaux avec uniquement la projection de la requête

db.system.profile.find(
{ 
    ns: { 
        $nin : ['meteor.system.profile','meteor.system.indexes']
    }
},
{'query':1}
).limit(5).sort( { ts : -1 } ).pretty()

7voto

Hans N. Hjort Points 521

Les données du profileur sont écrites dans une collection de votre BD, pas dans un fichier. Voir http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/

Je recommande l'utilisation de 10gen MMS et y introduire les données du profileur de développement, où vous pouvez les filtrer et les trier dans l'interface utilisateur.

4voto

ppeterka Points 12141

Je pense que, sans être élégant, le oplog pourrait est partiellement utilisé à cette fin : il enregistre toutes les écritures - mais pas les lectures...

Vous devez activer le replicatoon, si je ne me trompe pas. L'information provient de cette réponse de cette question : Comment écouter les modifications apportées à une collection MongoDB ?

4voto

Shnkc Points 520

La définition du niveau de profilage à 2 est une autre option pour enregistrer toutes les requêtes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X