MongoDB 监控(八)mongostat

快猫实习生 2024-11-15 17:45:24

MongoDB 监控

这是 MongoDB 监控系列文章的第八篇,前面几篇文章的链接如下:

上一篇文章我们大概浏览了 MongoDB 的 Grafana 仪表盘,从仪表盘中大概了解到了一些较为关键的指标。实际还有另一个方法来辅助我们获知哪些信息较为重要,就是使用 mongostat 命令。mongostat 命令是类似 vmstat 的工具,可以实时查看 MongoDB 的运行状态,包括连接数、查询数、更新数、删除数、命中数、未命中数等等。我们看看 mongostat 的输出中包含哪些指标,就能知道哪些指标比较关键。

mongostat 命令的输出

使用如下命令可以启动 mongostat 命令,连到某个 MongoDB 实例:

mongostat -u username -p password --host 10.99.1.110 --port 27017 --authenticationDatabase admin

上面的命令中,-u 是用户名,-p 是密码,--host 是 MongoDB 实例的 IP 地址,--port 是 MongoDB 实例的端口号,--authenticationDatabase 是认证数据库。换成你自己的认证信息。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     4|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0   416b   58.5k  134 Nov 15 17:49:13.871
    *0    *0     *0     *0       0     5|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0   533b   59.3k  134 Nov 15 17:49:14.869
    *0    *0     *0     *0       0     4|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0   612b   58.6k  134 Nov 15 17:49:15.879
    *0    *0     *0     *0       0     1|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0   113b   58.9k  134 Nov 15 17:49:16.861
    *0    *0     *0     *0       0     1|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0   259b   58.1k  134 Nov 15 17:49:17.862
    *0    *0     *0     *0       0     2|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0   311b   56.6k  134 Nov 15 17:49:18.897
    *0    *0     *0     *0       0    75|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0  15.7k    228k  134 Nov 15 17:49:19.948
    *0    *0     *0     *0       0     0|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0   111b   57.6k  134 Nov 15 17:49:20.953
    *0    *0     *0     *0       0     1|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0   123b   63.6k  134 Nov 15 17:49:21.864
    *0     3     *0     *0       0     6|0  0.1% 14.9%       0 2.17G 607M 0|0 0|0  2.08k   78.1k  134 Nov 15 17:49:22.860

默认 mongostat 每秒采集一次数据,当然你可以调整采集频率,通过 mongostat --help 可以看到有哪些选型可以调整。mongostat 输出的各个字段的含义有:

  • insert:每秒插入数据库的对象数,如果后面跟着星号(*),则该数据指的是复制操作。
  • query:每秒执行查询的次数。
  • update:每秒执行更新的次数。
  • delete:每秒执行删除的次数。
  • getmore:每秒执行 getmore(即光标批处理)操作的次数。
  • command:每秒执行命令的次数。在一个 secondary 节点,会展示两个值,用竖线分隔,前面的值是在本地执行的命令数,后面的值是复制执行的命令数。
  • dirty:只用于 WiredTiger 存储引擎(这是现在通常使用的存储引擎),WiredTiger cache 中的脏数据的百分比。计算方法是 wiredTiger.cache.tracked dirty bytes in the cache / wiredTiger.cache.maximum bytes configured
  • used:只用于 WiredTiger 存储引擎,表示 WiredTiger cache 中已使用数据的百分比。计算方法是 wiredTiger.cache.bytes currently in the cache / wiredTiger.cache.maximum bytes configured
  • flushes:只用于 WiredTiger 存储引擎,表示在上个轮询周期内触发了多少次 checkpoint。
  • vsize:虚拟内存的大小。
  • res:常驻内存大小。
  • qrw:读写操作的队列长度。
  • arw:活跃读写操作次数。
  • net_in:每秒接收的字节数。包括了 mongostat 本身触发的网络流量。
  • net_out:每秒发送的字节数。包括了 mongostat 本身触发的网络流量。
  • conn:当前打开的连接数。
  • time:采集时间。
  • set:如果有的话,表示副本集的名字。
  • repl:如果有的话,表示当前实例的副本集状态。repl 的可能取值如下
    • PRI: primary
    • SEC: secondary
    • REC: recovering
    • UNK: unknown
    • RTR: mongos process (“router”)
    • ARB: arbiter

总结

mongostat 命令可以实时查看 MongoDB 的运行状态,从 mongostat 的输出中可以看到哪些信息比较关键,概括来看,主要是实例增删改查的次数、缓存的使用情况、网络流量、队列长度、连接数、副本集状态等等。如果我们要制作 MongoDB 监控仪表盘,mongostat 输出的这些信息就是我们必须要放到仪表盘上的指标。

联系我们交流

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat