MongoDB 监控

MongoDB 中提供了 mongostat 和 mongotop 两个命令来监控 MongoDB 的运行情况。

注意:从 MongoDB 4.4 之后,这些工具并没有随安装包一起发布,需要的用户自行下载,下载地址:https://www.mongodb.com/try/download/database-tools

mongostat 命令

mongostat 命令是 MongoDB 自带的状态检测工具。它会间隔固定时间获取 MongoDB 的当前运行状态并输出。如果你发现数据库突然变慢或者有其他问题的话,你首先想到是使用 mongostat 来查看 MongoDB 的状态。

在命令行直接运行 mongostat 命令,如下:

C:UsersAdministrator> 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     0|0  0.0% 0.0%       0 5.47G 226M 0|0 0|0   111b   57.5k    4 Sep  8 12:49:27.618
   *0    *0     *0     *0       0     1|0  0.0% 0.0%       0 5.47G 226M 0|0 0|0   112b   57.7k    4 Sep  8 12:49:28.617
   *0    *0     *0     *0       0     1|0  0.0% 0.0%       0 5.47G 226M 0|0 0|0   112b   57.8k    4 Sep  8 12:49:29.615
   *0    *0     *0     *0       0     0|0  0.0% 0.0%       0 5.47G 226M 0|0 0|0   111b   57.6k    4 Sep  8 12:49:30.616
   *0    *0     *0     *0       0     0|0  0.0% 0.0%       0 5.47G 226M 0|0 0|0   111b   57.6k    4 Sep  8 12:49:31.617
   *0    *0     *0     *0       0     1|0  0.0% 0.0%       0 5.47G 226M 0|0 0|0   112b   57.7k    4 Sep  8 12:49:32.617
   *0    *0     *0     *0       0     0|0  0.0% 0.0%       0 5.47G 226M 0|0 0|0   111b   57.2k    4 Sep  8 12:49:33.624
   *0    *0     *0     *0       0     1|0  0.0% 0.0%       0 5.47G 226M 0|0 0|0   112b   57.7k    4 Sep  8 12:49:34.624
   *0    *0     *0     *0       0     1|0  0.0% 0.0%       0 5.47G 226M 0|0 0|0   112b   57.8k    4 Sep  8 12:49:35.621

输出信息中标题说明如下:

  • insert:每秒插入的文档数。

  • query:每秒执行的查询数。

  • update:每秒执行的更新操作数。

  • delete:每秒执行的删除操作数。

  • getmore:每秒执行的获取更多(cursor)操作数。

  • command:每秒执行的命令数。

  • dirty:WiredTiger存储引擎中dirty 数据占缓存百分比

  • used:WiredTiger存储引擎中引擎使用缓存占百分比

  • flushes:每秒执行的刷新操作数。

  • vsize:mongod 进程的虚拟内存大小(单位:MB)。

  • res:mongod 进程的常驻内存大小(单位:MB)。

  • qrw: 客户端等待从 MongoDB 实例读写数据的队列长度,使用 | 隔开。

  • arw:执行读写操作的活跃客户端数量,使用 | 隔开。

  • net_in:MongoDB 实例的网络进流量。

  • net_out:MongoDB 实例的网络出流量。

  • conn:当前的连接数。

  • time:获取信息的时间。

点击 “工具 mongostat” 查看更多信息。

mongotop 命令

ngotop 也是 MongoDB 下的一个内置工具,用于监视 MongoDB 实例中的读写操作。它提供了实时的读写操作统计信息,可以帮助用户了解 MongoDB 实例的繁忙程度和哪些操作消耗了最多的时间。

使用 mongotop 命令时,可以指定以下选项:

  • --host:MongoDB实例的主机名,默认为本地主机。

  • --port:MongoDB实例的端口号,默认为27017。

  • --username:连接MongoDB实例所需的用户名。

  • --password:连接MongoDB实例所需的密码。

  • --authenticationDatabase:用于进行身份验证的数据库,默认为admin。

  • --namespace:只显示指定命名空间的读写操作统计信息。

  • --locks:显示锁定的读写操作统计信息。

  • --sleep:指定每次采样之间的睡眠时间(以秒为单位),默认为1秒。

  • --json:以JSON格式输出读写操作统计信息。

使用 mongotop 监测本地 MongoDB 服务的读写情况(默认 mongotop 返回数据间隔为一秒),例如:

C:UsersAdministrator> mongotop
2023-09-08T13:04:21.215+0800    connected to: mongodb://localhost/

                   ns    total    read    write    2023-09-08T13:04:22+08:00
 admin.system.version      0ms     0ms      0ms
config.system.sessions      0ms     0ms      0ms
  config.transactions      0ms     0ms      0ms
 local.system.replset      0ms     0ms      0ms

                   ns    total    read    write    2023-09-08T13:04:23+08:00
 admin.system.version      0ms     0ms      0ms
config.system.sessions      0ms     0ms      0ms
  config.transactions      0ms     0ms      0ms
 local.system.replset      0ms     0ms      0ms
...

结果字段说明:

  • ns:包含数据库命名空间,后者结合了数据库名称和集合。

  • total:mongod花费的时间工作在这个命名空间提供总额。

  • read:提供了大量的时间,这mongod花费在执行读操作,在此命名空间。

  • write:提供这个命名空间进行写操作,这mongod花了大量的时间。

更多示例如下:

(1)限制 mongotop 每间隔 10 秒返回一次统计信息,例如:

C:UsersAdministrator> mongotop 10
2023-09-08T13:11:04.536+0800    connected to: mongodb://localhost/

                   ns    total    read    write    2023-09-08T13:11:14+08:00
 admin.system.version      0ms     0ms      0ms
config.system.sessions      0ms     0ms      0ms
  config.transactions      0ms     0ms      0ms
 local.system.replset      0ms     0ms      0ms

                   ns    total    read    write    2023-09-08T13:11:24+08:00
 admin.system.version      0ms     0ms      0ms
config.system.sessions      0ms     0ms      0ms
  config.transactions      0ms     0ms      0ms
 local.system.replset      0ms     0ms      0ms
...

注意,mongotop 命令后面的 10 是 <sleeptime> 参数,用来指定 mongotop 两条数据的间隔时间。

(2)使用 --locks 选项报告每个数据库的锁使用情况,例如:

C:UsersAdministrator> mongotop --locks

点击 “工具 mongotop” 查看更多信息。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号