While manual MongoDB configuration remains a valid approach, various tools now simplify the process of launching and deploying MongoDB instances. Among these utilities, mtools stands out as a comprehensive solution developed and maintained by MongoDB engineers.
Understanding mtools
mtools is a Python-based MongoDB toolkit that provides essential utilities for log analysis, reporting, and simplified database deployment. Original created and maintained by MongoDB engineers, this open-source project has gained significant adoption within the community.
Core Components
The toolkit includes several powerful components designed to streamline MongoDB operations:
- mlaunch: Rapidly provisions local development environments, supporting standalone instances, replica sets, and sharded clusters with minimal configuration.
- mlogfilter: Processes MongoDB log files with advanced filtering capabilities, including time-based slow query retrieval, full collection scan detection, multi-attribute filtering, and JSON output generation.
- mplotqueries: Transforms log analysis results into visual charts using tkinter and matplotlib libraries for data visualization.
- mlogvis: Converts log analysis into standalone HTML pages, serving as a browser-based alternative to mplotqueries.
- mloginfo
The folowing table summarizes the available tools and their primary functions:
| Tool | Purpose |
|---|---|
| mlogfilter | Merge, split, and filter log files; extract slow queries and collection scans; format conversion |
| mloginfo | Extract database statistics from logs (startup, connections, cluster status) |
| mplotqueries | Generate visual charts from log data |
| mlogvis | Create HTML pages from log analysis |
| mlaunch | Deploy local development environments (standalone, cluster, sharded) |
Installation
Prerequisites
Before installing mtools, ensure that MongoDB binaries are accessible in your system PATH under {MONGODB_HOME}/bin. The tool requires Python 3.7 or later, with Python 3.9 recommended for CentOS 7 environments.
Pip Installation
Install the required dependencies first:
pip3 install python-dateutil
pip3 install psutil pymongo
Then proceed with mtools installation:
pip3 install mtools
Building from Source
For manual compilation, download the source archive from the official repository:
wget https://github.com/rueckstiess/mtools/archive/refs/tags/v1.6.4.tar.gz
tar -xzf v1.6.4.tar.gz
cd mtools-1.6.4
python setup.py install
Deploying Replica Sets
Create a working directory for your replica set deployment:
mkdir -p /data/mongodb/rs-environment
cd /data/mongodb/rs-environment
mlaunch init --replicaset --nodes 3
By default, mlaunch assigns ports starting from 27017, incrementing sequentially for each node (27017, 27018, 27019).
Verifying Replica Set Status
Connect to the primary instance and check the replica set configuration:
mongo --port 27017
replset:PRIMARY> rs.status()
Deploying Sharded Clusters
For production-like testing environments, mtools supports sharded cluster deployment with configurable components:
mkdir -p /data/mongodb/sharded-environment
cd /data/mongodb/sharded-environment
mlaunch init --sharded 2 --replicaset --nodes 3 --config 3 --csrs --mongos 3 --port 27050
Configuration Parameters
The initialization command accepts several parameters to customize your deployment:
--sharded [count]: Enables sharded cluster mode with the specified number of shards.--replicaset --nodes [count]: Configures each shard as a replica set with the specified number of members.--config [count] --csrs: Deploys config servers as a replica set using the Config Server as a Replica Set (CSRS) architecture.--mongos [count]: Launches the specified number of mongos router processes.--port [number]: Sets the base port for the cluster; subsequent instances use incrementing ports.--noauth: Disables authentication for simplified testing.--arbiter: Adds a arbiter node to the replica set for election purposes.--single: Creates standalone instances without replication.--dir [path]: Specifies the data directory (defaults to ./data).--binarypath [path]: Uses existing MongoDB binaries from the specified directory.
Monitoring Cluster Instances
The mlaunch list command displays the current status of all deployed instances:
mlaunch list --tags
mlaunch list --startup
These commands reveal instance labels, process IDs, and listening ports.
Verifying Shard Distribution
Connect to a mongos router to inspect the shard configuration:
mongo --port 27050
mongos> db.adminCommand({listShards: 1})
Cluster Management
Control cluster operations using straightforward commands:
mlaunch stop # Halts all running instances
mlaunch start # Resumes previously stopped instances