MongoDB monitoring with Netdata
Monitors performance and health metrics of MongoDB.
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):
Read requests:
- query
- getmore (operation the cursor executes to get additional data from query)
Write requests:
- insert
- delete
- update
Active clients:
- readers (number of clients with read operations in progress or queued)
- writers (number of clients with write operations in progress or queued)
Journal transactions:
- commits (count of transactions that have been written to the journal)
Data written to the journal:
- volume (volume of data)
Background flush (MMAPv1):
- average ms (average time taken by flushes to execute)
- last ms (time taken by the last flush)
Read tickets (WiredTiger):
- in use (number of read tickets in use)
- available (number of available read tickets remaining)
Write tickets (WiredTiger):
- in use (number of write tickets in use)
- available (number of available write tickets remaining)
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)
Connections:
- connected (number of clients currently connected to the database server)
- unused (number of unused connections available for new clients)
Memory usage metrics:
- virtual
- resident (amount of memory used by the database process)
- mapped
- non mapped
Page faults:
- page faults (number of times MongoDB had to request from disk)
Cache metrics (WiredTiger):
- percentage of bytes currently in the cache (amount of space taken by cached data)
- percentage of tracked dirty bytes in the cache (amount of space taken by dirty data)
Pages evicted from cache (WiredTiger):
- modified
- unmodified
Queued requests:
- readers (number of read request currently queued)
- writers (number of write request currently queued)
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)
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)
Documents in the database (one chart for all databases)
- documents (number of objects in the database among all the collections)
tcmalloc metrics
- central cache free
- current total thread cache
- pageheap free
- pageheap unmapped
- thread cache free
- transfer cache free
- heap size
Commands total/failed rate
- count
- createIndex
- delete
- eval
- findAndModify
- insert
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
Replica set members state
- state
Oplog window
- window (interval of time between the oldest and the latest entries in the oplog)
Replication lag
- member (time when last entry from the oplog was applied for every member)
Replication set member heartbeat latency
- member (time when last heartbeat was received from replica set member)
Prerequisite
Create a read-only user for Netdata in the admin database.
- Authenticate as the admin user.
use admin
db.auth("admin", "<MONGODB_ADMIN_PASSWORD>")
- Create a user.
# MongoDB 2.x.
db.addUser("netdata", "<UNIQUE_PASSWORD>", true)
# MongoDB 3.x or higher.
db.createUser({
"user":"netdata",
"pwd": "<UNIQUE_PASSWORD>",
"roles" : [
{role: 'read', db: 'admin' },
{role: 'clusterMonitor', db: 'admin'},
{role: 'read', db: 'local' }
]
})
Configuration
Edit the python.d/mongodb.conf
configuration file using edit-config
from the Netdata config
directory, which is typically at /etc/netdata
.
cd /etc/netdata # Replace this path with your Netdata config directory, if different
sudo ./edit-config python.d/mongodb.conf
Sample:
local:
name : 'local'
authdb: 'admin'
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
Was this page helpful?
Need further help?
Search for an answer in our community forum.
Contribute
- Join our community forum
- Learn how to contribute to Netdata's open-source project
- Submit a feature request