要想查看 MongoDB 服务器中运行的进程/查询,你需要执行db.currentOp()命令,但该命令返回冗长的 JSON,包括复制线程、系统线程等,排查问题时很是困难。
作为一名有 MySQL 背景的 DBA,如果能在 MongoDB 里可以使用 MySQL 的 "show processlist"命令,那将是完美的。
mongodb_process_checker 工具或许可以帮助你。
使用
代码语言:bash复制shell> ./mongodb_process_checker --help
usage: mongodb_process_checker [-h] [-H MONGO_HOST] [-P MONGO_PORT] [-u MONGO_USER] [-p MONGO_PASSWORD] [-a AUTHDB]
[-i REFRESH_RATE] [-k KILL] [--dry-run] [-v] [-r]
Mongo Process Checker
options:
-h, --help show this help message and exit
-H MONGO_HOST, --host MONGO_HOST
Input Hostname, Default: localhost
-P MONGO_PORT, --port MONGO_PORT
Input Port, Default: 27017
-u MONGO_USER, --user MONGO_USER
Input Username, Default: NoAuth
-p MONGO_PASSWORD, --password MONGO_PASSWORD
Input Password, Default: NoAuth
-a AUTHDB, --authDB AUTHDB
Input Auth DB, Default: admin
-i REFRESH_RATE, --interval REFRESH_RATE
Input Refresh Interval (Sec), Default: 4 Sec
-k KILL, --kill KILL Input Value To Kill Queries Exceeding X Sec
--dry-run Just Print Queries Exceeding X Sec
-v, --verbose Print OpCounter, Document Stats
-r, --repl Print Replication Info
shell> ./mongodb_process_checker -H 192.168.176.204 -P 37017 -u admin -p 123456 -a admin -r -v
通过传递主机、用户和密码信息,mongo_process_checker 会连接到相应的 MongoDB 服务器,检查当前进程并以可读格式实时显示。