mongodb实时监控
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 1|0 0.0% 0.0% 0 1.04G 147M 0|0 1|0 157b 62.0k 1 Feb 16 12:30:53.687
*0 *0 *0 *0 0 2|0 0.0% 0.0% 0 1.04G 147M 0|0 1|0 158b 62.4k 1 Feb 16 12:30:54.683
*0 *0 *0 *0 0 2|0 0.0% 0.0% 0 1.04G 147M 0|0 1|0 158b 62.3k 1 Feb 16 12:30:55.683
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 1.04G 147M 0|0 1|0 156b 61.8k 1 Feb 16 12:30:56.690
*0 *0 *0 *0 0 2|0 0.0% 0.0% 0 1.04G 147M 0|0 1|0 158b 62.6k 1 Feb 16 12:30:57.684
dirty 脏数据,还没写进磁盘里面的
flushes 刷新磁盘次数,这里越多,dirty越少,磁盘io越大
vsize 数据的大小
res 占用内存
conn 当前连接数
第二种(非实时输出,可以配合zabbix监控)
db.serverStatus() #获取全部信息
db.serverStatus().network #获取网络信息
db.serverStatus().opcounters #获取增删改数据 这里的数量是总数量,因此监控的时候需要两个数值相减,然后除以时间。
db.serverStatus().connections #获取当前连接数
编写shell脚本时可以这样
echo 'db.serverStatus().opcounters' | mongo 127.0.0.1:27017