MongoDB监控运行状态

1年前 (2024-04-26)
监控是 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 的运行情况。