1. mongosniff 

 此工具可以从底层监控到底有哪些命令发送给了 MongoDB去执行,从中就可以进行分析: 以root身份执行:





./mongosniff --source NET lo 





  然后其会监控位到本地以 localhost 监听默认 27017 端口的 MongoDB 的所有包请求,如执行”show    dbs”  操作 





[root@localhost bin]# ./mongo
MongoDB shell version: 1.8.1
connecting to: test
> show dbs
admin      0.0625GB
foo          0.0625GB
local      (empty)
test        0.0625GB
>





那么你可以看到如下输出。 



[root@localhost bin]# ./mongosniff --source NET lo


sniffing... 27017  


127.0.0.1:38500    -->> 127.0.0.1:27017 admin.$cmd    60 bytes    id:537ebe0f 1400815119 query: { whatsmyuri: 1 }    ntoreturn: 1 ntoskip: 0 127.0.0.1:27017    <<--    127.0.0.1:38500      78 bytes    id:531c3855    1394358357 - 1400815119    reply n:1 cursorId: 0    { you: "127.0.0.1:38500", ok: 1.0 }



如果将这些输出到一个日志文件中,那么就可以保留下所有数据库操作的历史记录,对于后


期的性能分析和安全审计等工作将是一个巨大的贡献。 





2.  Mongostat 






此工具可以快速的查看某组运行中的 MongoDB 实例的统计信息,用法如下:



[root@localhost bin]# ./mongostat  




D:\Program Files\mongodb\Server\3.1\bin>mongostat

insert

 query update delete getmore command flushes mapped  vsize   res       faults qr|qw ar|aw netIn netOut conn     time

    *0    *0     *0     *0       0          1|0          0     240.0M  600.0M 84.0M      1   0|0   0|0   79b    10k    1 14:45:30


    *0    *0     *0     *0       0          1|0          0     240.0M  600.0M 84.0M      1   0|0   0|0   79b    10k    1 14:45:31


    *0    *0     *0     *0       0          1|0          0     240.0M  600.0M 84.0M      1   0|0   0|0   79b    10k    1 14:45:32





字段说明 字段说明 字段说明 字段说明:
  insert:  每秒插入量
  query:  每秒查询量
  update:  每秒更新量
  delete:  每秒删除量
  locked:  锁定量
  qr | qw:  客户端查询排队长度(读|写)
  ar | aw:  活跃客户端量(读|写)
  conn:  连接数
  time:  当前时间
它每秒钟刷新一次状态值,提供良好的可读性,通过这些参数可以观察到一个整体的性能情况。 



 



3. db.serverStatus 






  这个命令是最常用也是最基础的查看实例运行状态的命令之一,下面我们看一下它的输出: 






 db.serverStatus()  




      {

                "host" : "localhost.localdomain",


                "version" : "1.8.1",                                      --服务器版本


                "process" : "mongod",


                "uptime" : 3184,                                          --启动时间(秒)


                "uptimeEstimate" : 3174,                            


                "localTime" : ISODate("2012-05-28T11:20:22.819Z"),


         "globalLock" : {

                                "totalTime" : 3183918151,


                                "lockTime" : 10979,


                                "ratio" : 0.000003448267034299149,


                                "currentQueue" : {


                                                "total" : 0,                            --当前全部队列量


                                                "readers" : 0,                        --读请求队列量


                                                "writers" : 0                          --写请求队列量


                                    },


          "activeClients" : {


                                                "total" : 0,                              --当前全部客户端连接量


                                                "readers" : 0,                        --客户端读请求量


                                                "writers" : 0                          --客户端写请求量


                                          }


                                         },


            "mem" : {


                                "bits" : 32,                          --32位系统


                                "resident" : 20,                    --占用物量内存量


                                "virtual" : 126,                      --虚拟内存量


                                "supported" : true,              --是否支持扩展内存


                                "mapped" : 32


                                               },


            "connections" : {


                                "current" : 1,                      --当前活动连接量


                                "available" : 818                --剩余空闲连接量


                                                },


                                      ……


             "indexCounters" : {


                                "btree" : {


                                                "accesses" : 0,                        --索引被访问量


                                                "hits" : 0,                                --索引命中量


                                                "misses" : 0,                            --索引偏差量


                                                "resets" : 0,


                                                "missRatio" : 0                      --索引偏差率(未命中率)


                                }


                },


                                       ……


             "network" : {


                                "bytesIn" : 1953,                          --发给此服务器的数据量(单位:byte)


                                "bytesOut" : 25744,                      --此服务器发出的数据量(单位:byte)


                                "numRequests" : 30                    --发给此服务器的请求量


                },


             "opcounters" : {


                                "insert" : 0,                            --插入操作的量 





4.   db.stats 






查看数据库状态信息。使用样例如下



db.stats()
{
        "db" : "test",
        "collections" : 12,             --collection数量
        "objects" : 76,                    --对象数量
        "avgObjSize" : 3604.684210526316,    --对象平均大小
        "dataSize" : 273956,          --数据大小
        "storageSize" : 5423104,     --数据大小(含预分配空间)
        "numExtents" : 13,              --事件数量
        "indexes" : 17,                    --索引数量
        "indexSize" : 138992,           --索引大小
        "fileSize" : 67108864,           --文件大小
        "nsSizeMB" : 16,
        "extentFreeList" : {
                "num" : 0,
                "totalSize" : 0
        },
        "dataFileVersion" : {
                "major" : 4,
                "minor" : 22
        },
        "ok" : 1                                --本次取stats是否正常
}





5.第三方工具



MongoDB 从一面世就得到众多开源爱好者和团队的重视,在常用的监控框架如  cacti、Nagios、Zabbix 等基础上进行扩展,



进行 MongoDB 的监控都是非常方便。