要想查看 MongoDB 服务器中运行的进程/查询,你需要执行db.currentOp()命令,但该命令返回冗长的 JSON,包括复制线程、系统线程等,排查问题时很是困难。

作为一名有 MySQL 背景的 DBA,如果能在 MongoDB 里可以使用 MySQL 的 "show processlist"命令,那将是完美的。

mongodb_process_checker工具或许可以帮助你。

https://github.com/hcymysql/mongodb_process_checker/


使用

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

实时监控MongoDB运行状态,就像你在MySQL里,执行show processlist一样_服务器

通过传递主机、用户和密码信息,mongo_process_checker 会连接到相应的 MongoDB 服务器,检查当前进程并以可读格式实时显示。