Skip to content

Latest commit

 

History

History
 
 

mongodb

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

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):

  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)
  7. Read tickets (WiredTiger):

    • in use (number of read tickets in use)
    • available (number of available read tickets remaining)
  8. Write tickets (WiredTiger):

    • in use (number of write tickets in use)
    • available (number of available write tickets remaining)
  9. 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)
  1. Connections:

    • connected (number of clients currently connected to the database server)
    • unused (number of unused connections available for new clients)
  2. Memory usage metrics:

    • virtual
    • resident (amount of memory used by the database process)
    • mapped
    • non mapped
  3. Page faults:

    • page faults (number of times MongoDB had to request from disk)
  4. 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)
  5. Pages evicted from cache (WiredTiger):

    • modified
    • unmodified
  6. Queued requests:

    • readers (number of read request currently queued)
    • writers (number of write request currently queued)
  7. 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)
  8. 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)
  9. Documents in the database (one chart for all databases)

  • documents (number of objects in the database among all the collections)
  1. tcmalloc metrics

    • central cache free
    • current total thread cache
    • pageheap free
    • pageheap unmapped
    • thread cache free
    • transfer cache free
    • heap size
  2. Commands total/failed rate

    • count
    • createIndex
    • delete
    • eval
    • findAndModify
    • insert
  3. 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
  4. Replica set members state

    • state
  5. Oplog window

    • window (interval of time between the oldest and the latest entries in the oplog)
  6. Replication lag

    • member (time when last entry from the oplog was applied for every member)
  7. 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.

  1. Authenticate as the admin user.
use admin
db.auth("admin", "<MONGODB_ADMIN_PASSWORD>")
  1. 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


analytics