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.
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
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.
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.
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 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.
mongotop tracks and reports the current read and write activity of a MongoDB instance, and reports these statistics on a per collection basis.
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 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
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.
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 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.
These are monitoring tools provided as a hosted service, usually through a paid subscription.
|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.|
During normal operation,
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 the
logLevelparameter or the
db.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.
The following database commands also affect logging: