第五章:mongodb 性能监控


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 的监控都是非常方便。

 

你可能感兴趣的:(mongodb性能监控)