On this page
Monitoring for MongoDB
On this page
Monitoring is a critical component of all database administration. A firm grasp of MongoDB’s reporting will allow you to assess the state of your database and maintain your deployment without crisis. Additionally, a sense of MongoDB’s normal operational parameters will allow you to diagnose problems before they escalate to failures.
This document presents an overview of the available monitoring utilities and the reporting statistics available in MongoDB. It also introduces diagnostic strategies and suggestions for monitoring replica sets and sharded clusters.
Note
MongoDB Atlas is a cloud-hosted database-as-a-service. MongoDB Cloud Manager , a hosted service, and Ops Manager , an on-premise solution, provide monitoring, backup, and automation of MongoDB instances. For documentation, see Atlas documentation , the MongoDB Cloud Manager documentation and Ops Manager documentation
Monitoring Strategies
There are three methods for collecting data about the state of a running MongoDB instance:
- First, there is a set of utilities distributed with MongoDB that provides real-time reporting of database activities.
- Second, database commands return statistics regarding the current database state with greater fidelity.
- Third, MongoDB Atlas is a cloud-hosted database-as-a-service for running, monitoring, and maintaining MongoDB deployments. MongoDB Cloud Manager , a hosted service, and Ops Manager, an on-premise solution available in MongoDB Enterprise Advanced , provide monitoring to collect data from running MongoDB deployments as well as providing visualization and alerts based on that data.
Each strategy can help answer different questions and is useful in different contexts. These methods are complementary.
MongoDB Reporting Tools
This section provides an overview of the reporting methods distributed with MongoDB. It also offers examples of the kinds of questions that each method is best suited to help you address.
Utilities
The MongoDB distribution includes a number of utilities that quickly return statistics about instances’ performance and activity. Typically, these are most useful for diagnosing issues and assessing normal operation.
mongostat
mongostat
captures and returns the counts of database operations by type (e.g. insert, query, update, delete, etc.). These counts report on the load distribution on the server.
Use mongostat
to understand the distribution of operation types and to inform capacity planning. See the mongostat manual for details.
mongotop
mongotop
tracks and reports the current read and write activity of a MongoDB instance, and reports these statistics on a per collection basis.
Use mongotop
to check if your database activity and use match your expectations. See the mongotop manual for details.
Commands
MongoDB includes a number of commands that report on the state of the database.
These data may provide a finer level of granularity than the utilities discussed above. Consider using their output in scripts and programs to develop custom alerts, or to modify the behavior of your application in response to the activity of your instance. The db.currentOp
method is another useful tool for identifying the database instance’s in-progress operations.
serverStatus
The serverStatus
command, or db.serverStatus()
from the shell, returns a general overview of the status of the database, detailing disk usage, memory use, connection, journaling, and index access. The command returns quickly and does not impact MongoDB performance.
serverStatus
outputs an account of the state of a MongoDB instance. This command is rarely run directly. In most cases, the data is more meaningful when aggregated, as one would see with monitoring tools including MongoDB Cloud Manager and Ops Manager . Nevertheless, all administrators should be familiar with the data provided by serverStatus
.
dbStats
The dbStats
command, or db.stats()
from the shell, returns a document that addresses storage use and data volumes. The dbStats
reflect the amount of storage used, the quantity of data contained in the database, and object, collection, and index counters.
Use this data to monitor the state and storage capacity of a specific database. This output also allows you to compare use between databases and to determine the average document size in a database.
collStats
The collStats
or db.collection.stats()
from the shell that provides statistics that resemble dbStats
on the collection level, including a count of the objects in the collection, the size of the collection, the amount of disk space used by the collection, and information about its indexes.
replSetGetStatus
The replSetGetStatus
command (rs.status()
from the shell) returns an overview of your replica set’s status. The replSetGetStatus document details the state and configuration of the replica set and statistics about its members.
Use this data to ensure that replication is properly configured, and to check the connections between the current host and the other members of the replica set.
Hosted (SaaS) Monitoring Tools
These are monitoring tools provided as a hosted service, usually through a paid subscription.
Name | Notes |
---|---|
MongoDB Cloud Manager | MongoDB Cloud Manager is a cloud-based suite of services for managing MongoDB deployments. MongoDB Cloud Manager provides monitoring, backup, and automation functionality. For an on-premise solution, see also Ops Manager, available in MongoDB Enterprise Advanced . |
VividCortex | VividCortex provides deep insights into MongoDB production database workload and query performance – in one-second resolution. Track latency, throughput, errors, and more to ensure scalability and exceptional performance of your application on MongoDB. |
Scout | Several plugins, including MongoDB Monitoring , MongoDB Slow Queries , and MongoDB Replica Set Monitoring . |
Server Density | Dashboard for MongoDB , MongoDB specific alerts, replication failover timeline and iPhone, iPad and Android mobile apps. |
Application Performance Management | IBM has an Application Performance Management SaaS offering that includes monitor for MongoDB and other applications and middleware. |
New Relic | New Relic offers full support for application performance management. In addition, New Relic Plugins and Insights enable you to view monitoring metrics from Cloud Manager in New Relic. |
Datadog | Infrastructure monitoring to visualize the performance of your MongoDB deployments. |
SPM Performance Monitoring | Monitoring, Anomaly Detection and Alerting SPM monitors all key MongoDB metrics together with infrastructure incl. Docker and other application metrics, e.g. Node.js, Java, NGINX, Apache, HAProxy or Elasticsearch. SPM provides correlation of metrics and logs. |
Process Logging
During normal operation, mongod
and mongos
instances report a live account of all server activity and operations to either standard output or a log file. The following runtime settings control these options.
quiet
. Limits the amount of information written to the log or output.verbosity
. Increases the amount of information written to the log or output. You can also modify the logging verbosity during runtime with thelogLevel
parameter or thedb.setLogLevel()
method in the shell.path
. Enables logging to a file, rather than the standard output. You must specify the full path to the log file when adjusting this setting.logAppend
. Adds information to a log file instead of overwriting the file.
Note
You can specify these configuration operations as the command line arguments to mongod or mongos
For example:
mongod -v --logpath /var/log/mongodb/server1.log --logappend
Starts a mongod
instance in verbose
mode, appending data to the log file at /var/log/mongodb/server1.log/
.
The following database commands also affect logging:
getLog
. Displays recent messages from themongod
process log.logRotate
. Rotates the log files formongod
processes only. See Rotate Log Files.
Log Redaction
New in version 3.4: Available in MongoDB Enterprise only
A mongod
running with security.redactClientLogData
redacts messages associated with any given log event before logging, leaving only metadata, source files, or line numbers related to the event.