监控是 MongoDB 中最关键的管理活动之一,因为在 MongoDB 部署完成后,您必须时刻了解 MongoDB 的运行状况,保障 MongoDB 的正常运行。MongoDB 中提供了 mongostat 和 mongotop 两个命令来监控 MongoDB 的运行情况。
mongostat 命令能够检查所有正在运行的 mongod 实例的状态,并返回数据库操作的计数器。这些计数器包括插入、查询、更新、删除和游标。当您的内存不足、写入量不足或者出现一些性能问题时,该命令还会显示发生错误的时间,并显示锁定百分比。
要运行该命令,您需要先启动您的 mongod 实例,并在另一个命令提示符(CMD)中转到 MongoDB 安装目录下的 bin 目录,最后输入 mongostat 命令并运行,运行结果如下:
D:\install\Mongodb\bin>mongostat insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time *0 *0 *0 *0 0 661|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 52.2k 21.2m 2 Feb 25 16:12:57.893 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 160b 64.9k 2 Feb 25 16:12:58.880 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 158b 64.2k 2 Feb 25 16:12:59.879 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 157b 64.1k 2 Feb 25 16:13:00.880 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 158b 64.1k 2 Feb 25 16:13:01.879 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 157b 64.1k 2 Feb 25 16:13:02.880 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 156b 63.4k 2 Feb 25 16:13:03.891 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 159b 64.6k 2 Feb 25 16:13:04.884 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 157b 63.9k 2 Feb 25 16:13:05.887 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 158b 64.4k 2 Feb 25 16:13:06.882 insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 158b 64.2k 2 Feb 25 16:13:07.880 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 157b 64.1k 2 Feb 25 16:13:08.881 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 158b 64.2k 2 Feb 25 16:13:09.879 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 4.93G 17.0M 0|0 1|0 157b 64.1k 2 Feb 25 16:13:10.880 ... ...
mongotop 命令可以跟踪并报告 MongoDB 实例的读写活动。默认情况下,mongotop 能够提供每个集合的水平统计数据,并每秒钟返回一次,您也可以根据需要对其进行修改。
要运行该命令,您需要先启动您的 mongod 实例,并在另一个命令提示符(CMD)中转到 MongoDB 安装目录下的 bin 目录,最后输入 mongotop 命令并运行,运行结果如下:
D:\install\Mongodb\bin>mongotop 2021-02-25T16:46:24.038+0800 connected to: 127.0.0.1 ns total read write 2021-02-25T16:46:25+08:00 admin.system.roles 0ms 0ms 0ms admin.system.users 0ms 0ms 0ms admin.system.version 0ms 0ms 0ms cdsy.article 0ms 0ms 0ms cdsy.course 0ms 0ms 0ms config.system.sessions 0ms 0ms 0ms local.startup_log 0ms 0ms 0ms local.system.replset 0ms 0ms 0ms ns total read write 2021-02-25T16:46:26+08:00 admin.system.roles 0ms 0ms 0ms admin.system.users 0ms 0ms 0ms admin.system.version 0ms 0ms 0ms cdsy.article 0ms 0ms 0ms cdsy.course 0ms 0ms 0ms config.system.sessions 0ms 0ms 0ms local.startup_log 0ms 0ms 0ms local.system.replset 0ms 0ms 0ms ... ...
若要更改 mongotop 命令返回信息的频率,您可以在 mongotop 命令后面指定一个数字作为间隔的秒数,例如想要让 mongotop 命令每 20 秒返回一次信息,可以像下面这样:
D:\install\Mongodb\bin>mongotop 20 2021-02-25T16:49:46.331+0800 connected to: 127.0.0.1 ns total read write 2021-02-25T16:50:06+08:00 admin.system.roles 0ms 0ms 0ms admin.system.users 0ms 0ms 0ms admin.system.version 0ms 0ms 0ms cdsy.article 0ms 0ms 0ms cdsy.course 0ms 0ms 0ms config.system.sessions 0ms 0ms 0ms local.startup_log 0ms 0ms 0ms local.system.replset 0ms 0ms 0ms ns total read write 2021-02-25T16:50:26+08:00 admin.system.roles 0ms 0ms 0ms admin.system.users 0ms 0ms 0ms admin.system.version 0ms 0ms 0ms cdsy.article 0ms 0ms 0ms cdsy.course 0ms 0ms 0ms config.system.sessions 0ms 0ms 0ms local.startup_log 0ms 0ms 0ms local.system.replset 0ms 0ms 0ms ... ...
除了使用 MongoDB 中提供的这些命令外,MongoDB 官方还提供了一个免费的托管监控服务 MongoDB Management service(MMS),该服务能够以图形界面的形式展示 MongoDB 的运行情况。