Skip to content

Latest commit

 

History

History
171 lines (128 loc) · 4.57 KB

File metadata and controls

171 lines (128 loc) · 4.57 KB

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)
  1. Write requests:
  • insert
  • delete
  • update
  1. Active clients:
  • readers (number of clients with read operations in progress or queued)
  • writers (number of clients with write operations in progress or queued)
  1. Journal transactions:
  • commits (count of transactions that have been written to the journal)
  1. Data written to the journal:
  • volume (volume of data)
  1. Background flush (MMAPv1):
  • average ms (average time taken by flushes to execute)
  • last ms (time taken by the last flush)
  1. Read tickets (WiredTiger):
  • in use (number of read tickets in use)
  • available (number of available read tickets remaining)
  1. Write tickets (WiredTiger):
  • in use (number of write tickets in use)
  • available (number of available write tickets remaining)
  1. 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)
  1. Memory usage metrics:
  • virtual
  • resident (amount of memory used by the database process)
  • mapped
  • non mapped
  1. Page faults:
  • page faults (number of times MongoDB had to request from disk)
  1. 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)
  1. Pages evicted from cache (WiredTiger):
  • modified
  • unmodified
  1. Queued requests:
  • readers (number of read request currently queued)
  • writers (number of write request currently queued)
  1. 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)
  1. 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)
  1. 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
  1. Commands total/failed rate
  • count
  • createIndex
  • delete
  • eval
  • findAndModify
  • insert
  1. 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
  1. Replica set members state
  • state
  1. Oplog window
  • window (interval of time between the oldest and the latest entries in the oplog)
  1. Replication lag
  • member (time when last entry from the oplog was applied for every member)
  1. 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", "<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

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