MongoDB 监控(八)mongostat
快猫实习生
2024-11-15 17:45:24
这是 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
: primarySEC
: secondaryREC
: recoveringUNK
: unknownRTR
: mongos process (“router”)ARB
: arbiter
总结
mongostat 命令可以实时查看 MongoDB 的运行状态,从 mongostat 的输出中可以看到哪些信息比较关键,概括来看,主要是实例增删改查的次数、缓存的使用情况、网络流量、队列长度、连接数、副本集状态等等。如果我们要制作 MongoDB 监控仪表盘,mongostat 输出的这些信息就是我们必须要放到仪表盘上的指标。