211 lines
5.1 KiB
Markdown
211 lines
5.1 KiB
Markdown
<!--
|
|
title: "MongoDB monitoring with Netdata"
|
|
custom_edit_url: https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/mongodb/README.md
|
|
sidebar_label: "MongoDB"
|
|
-->
|
|
|
|
# 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)
|
|
|
|
10. **Connections**:
|
|
|
|
- connected (number of clients currently connected to the database server)
|
|
- unused (number of unused connections available for new clients)
|
|
|
|
11. **Memory usage metrics**:
|
|
|
|
- virtual
|
|
- resident (amount of memory used by the database process)
|
|
- mapped
|
|
- non mapped
|
|
|
|
12. **Page faults**:
|
|
|
|
- page faults (number of times MongoDB had to request from disk)
|
|
|
|
13. **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)
|
|
|
|
14. **Pages evicted from cache** (WiredTiger):
|
|
|
|
- modified
|
|
- unmodified
|
|
|
|
15. **Queued requests**:
|
|
|
|
- readers (number of read request currently queued)
|
|
- writers (number of write request currently queued)
|
|
|
|
16. **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)
|
|
|
|
17. **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)
|
|
|
|
18. **Documents in the database** (one chart for all databases)
|
|
|
|
- documents (number of objects in the database among all the collections)
|
|
|
|
19. **tcmalloc metrics**
|
|
|
|
- central cache free
|
|
- current total thread cache
|
|
- pageheap free
|
|
- pageheap unmapped
|
|
- thread cache free
|
|
- transfer cache free
|
|
- heap size
|
|
|
|
20. **Commands total/failed rate**
|
|
|
|
- count
|
|
- createIndex
|
|
- delete
|
|
- eval
|
|
- findAndModify
|
|
- insert
|
|
|
|
21. **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
|
|
|
|
22. **Replica set members state**
|
|
|
|
- state
|
|
|
|
23. **Oplog window**
|
|
|
|
- window (interval of time between the oldest and the latest entries in the oplog)
|
|
|
|
24. **Replication lag**
|
|
|
|
- member (time when last entry from the oplog was applied for every member)
|
|
|
|
25. **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>")
|
|
```
|
|
|
|
2. 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](/docs/configure/nodes.md), which is typically at `/etc/netdata`.
|
|
|
|
```bash
|
|
cd /etc/netdata # Replace this path with your Netdata config directory, if different
|
|
sudo ./edit-config python.d/mongodb.conf
|
|
```
|
|
|
|
Sample:
|
|
|
|
```yaml
|
|
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
|
|
|
|
---
|
|
|
|
|