MongoDB监控运行状态

 
监控是 MongoDB 中最关键的管理活动之一,因为在 MongoDB 部署完成后,您必须时刻了解 MongoDB 的运行状况,保障 MongoDB 的正常运行。MongoDB 中提供了 mongostat 和 mongotop 两个命令来监控 MongoDB 的运行情况。

mongostat

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

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
 bianchengbang.article      0ms     0ms      0ms
  bianchengbang.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
 bianchengbang.article      0ms     0ms      0ms
  bianchengbang.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
 bianchengbang.article      0ms     0ms      0ms
  bianchengbang.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
 bianchengbang.article      0ms     0ms      0ms
  bianchengbang.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 的运行情况。