Enable logging queries until restart
mongo -u username -p password use myDb db.setProfilingLevel(2)
Profiling Status
The current profile
level, slowOpThresholdMs
setting, and slowOpSampleRate
setting.
> db.getProfilingStatus() { "was" : 2, "slowms" : 1, "sampleRate" : 1 }
Starting in MongoDB 4.4.2, you can set a filter
to control which operations are logged by the profiler.
Enable logging queries permanently
nano /etc/mongod.conf
Log queries take more than 1 mills to run :
operationProfiling: mode: all slowOpThresholdMs: 1 slowOpSampleRate: 1.0
Log queries with filter :
operationProfiling: mode: all filter: '{ op: "query", millis: { $gt: 2000 } }'
Change Size of system.profile
Collection on the Primary
The <database>.system.profile
collection stores database profiling information.
To change the size of the system.profile collection on the primary, you must:
- Disable profiling.
- Drop the
system.profile
collection. - Create a new
system.profile
collection. - Re-enable profiling.
For example, to create a new system.profile collection that is 4000000 bytes (4 MB), use the following sequence of operations in mongosh:
db.setProfilingLevel(0) db.system.profile.drop() db.createCollection( "system.profile", { capped: true, size:4000000 } ) db.setProfilingLevel(1)
References
https://stackoverflow.com/questions/15204341/mongodb-logging-all-queries
https://stackoverflow.com/questions/18510966/why-the-queries-inside-the-system-profile-collection-are-being-overwritten
https://www.mongodb.com/docs/manual/tutorial/manage-the-database-profiler/
https://www.mongodb.com/docs/manual/reference/configuration-options/