# mongodb Module monitor mongodb performance and health metrics **Requirements:** * `python-pymongo` package v2.4+. You need to install it manually. Number of charts depends on mongodb version, storage engine and other features (replication): 1. **Read requests**: * query * getmore (operation the cursor executes to get additional data from query) 2. **Write requests**: * insert * delete * update 3. **Active clients**: * readers (number of clients with read operations in progress or queued) * writers (number of clients with write operations in progress or queued) 4. **Journal transactions**: * commits (count of transactions that have been written to the journal) 5. **Data written to the journal**: * volume (volume of data) 6. **Background flush** (MMAPv1): * average ms (average time taken by flushes to execute) * last ms (time taken by the last flush) 8. **Read tickets** (WiredTiger): * in use (number of read tickets in use) * available (number of available read tickets remaining) 9. **Write tickets** (WiredTiger): * in use (number of write tickets in use) * available (number of available write tickets remaining) 10. **Cursors**: * opened (number of cursors currently opened by MongoDB for clients) * timedOut (number of cursors that have timed) * noTimeout (number of open cursors with timeout disabled) 11. **Connections**: * connected (number of clients currently connected to the database server) * unused (number of unused connections available for new clients) 12. **Memory usage metrics**: * virtual * resident (amount of memory used by the database process) * mapped * non mapped 13. **Page faults**: * page faults (number of times MongoDB had to request from disk) 14. **Cache metrics** (WiredTiger): * percentage of bytes currently in the cache (amount of space taken by cached data) * percantage of tracked dirty bytes in the cache (amount of space taken by dirty data) 15. **Pages evicted from cache** (WiredTiger): * modified * unmodified 16. **Queued requests**: * readers (number of read request currently queued) * writers (number of write request currently queued) 17. **Errors**: * msg (number of message assertions raised) * warning (number of warning assertions raised) * regular (number of regular assertions raised) * user (number of assertions corresponding to errors generated by users) 18. **Storage metrics** (one chart for every database) * dataSize (size of all documents + padding in the database) * indexSize (size of all indexes in the database) * storageSize (size of all extents in the database) 19. **Documents in the database** (one chart for all databases) * documents (number of objects in the database among all the collections) 20. **tcmalloc metrics** * central cache free * current total thread cache * pageheap free * pageheap unmapped * thread cache free * transfer cache free * heap size 21. **Commands total/failed rate** * count * createIndex * delete * eval * findAndModify * insert 22. **Locks metrics** (acquireCount metrics - number of times the lock was acquired in the specified mode) * Global lock * Database lock * Collection lock * Metadata lock * oplog lock 23. **Replica set members state** * state 24. **Oplog window** * window (interval of time between the oldest and the latest entries in the oplog) 25. **Replication lag** * member (time when last entry from the oplog was applied for every member) 26. **Replication set member heartbeat latency** * member (time when last heartbeat was received from replica set member) ### prerequisite Create a read-only user for the netdata in the admin database. 1. Authenticate as the admin user. ``` use admin db.auth("admin", "") ``` 2. Create a user. ``` # MongoDB 2.x. db.addUser("netdata", "", true) # MongoDB 3.x or higher. db.createUser({ "user":"netdata", "pwd": "", "roles" : [ {role: 'read', db: 'admin' }, {role: 'clusterMonitor', db: 'admin'}, {role: 'read', db: 'local' } ] }) ``` ### configuration Sample: ```yaml local: name : 'local' host : '127.0.0.1' port : 27017 user : 'netdata' pass : 'netdata' ``` If no configuration is given, module will attempt to connect to mongodb daemon on `127.0.0.1:27017` address --- [![analytics](https://www.google-analytics.com/collect?v=1&aip=1&t=pageview&_s=1&ds=github&dr=https%3A%2F%2Fgithub.com%2Fnetdata%2Fnetdata&dl=https%3A%2F%2Fmy-netdata.io%2Fgithub%2Fcollectors%2Fpython.d.plugin%2Fmongodb%2FREADME&_u=MAC~&cid=5792dfd7-8dc4-476b-af31-da2fdb9f93d2&tid=UA-64295674-3)]()