Mongo-常用监控命令(转)

官方文档:https://docs.mongodb.com/manual/

1.mongosniff工具

首先了解一下sniffer的概念,百度百科解释:Sniffer,中文可以翻译为嗅探器,是一种基于被动侦听原理的网络分析方式。使用这种技术方式,可以监视网络的状态、数据流动情况以及网络上传输的信息。

sniffer既可以被犯罪分子利用进行违法活动,也可以被网络管理员利用来进行网络系统的维护和故障排除。目前,它已经被广泛应用于网络故障诊断、协议分析、应用性能分析和网络安全保障等各个领域。

Mongodb提供了一个sniffer工具:mongosniff,这个工具可以从底层监控有哪些命令传送给了Mongodb,启动该工具的语法如下面所示:

./mongosniff --source NET lo

注:lo代表Loopback,指IP数据包回送到本机上。通常使用的是127.0.0.1作为回送地址。

示例:

1)在服务端启动mongosniff

Shell代码  收藏代码

  1. [root@localhost mongodb]# ./bin/mongosniff --source NET lo  
  2. sniffing... 27017   

2)在客户端执行操作

Js代码  收藏代码

  1. > show dbs  
  2. admin   0.0625GB  
  3. local   (empty)  
  4. results 0.0625GB  
  5. test    0.0625GB  
  6. >   

3)服务端输出了如下的消息

Shell代码  收藏代码

  1. 127.0.0.1:51869  -->> 127.0.0.1:27017 admin.$cmd  67 bytes  id:4c 76  
  2.     query: { listDatabases: 1.0 }  ntoreturn: -1 ntoskip: 0  
  3. 127.0.0.1:27017  <<--  127.0.0.1:51869   297 bytes  id:a1 161 - 76  
  4.     reply n:1 cursorId: 0  
  5.     { databases: [ { name: "test", sizeOnDisk: 67108864.0, empty: false }, { name: "admin", sizeOnDisk: 67108864.0, empty: false }, { name: "results", sizeOnDisk: 67108864.0, empty: false }, { name: "local", sizeOnDisk: 1.0, empty: true } ], totalSize: 201326592.0, ok: 1.0 }  
  6. 127.0.0.1:51869  -->> 127.0.0.1:27017 admin.$cmd  80 bytes  id:4d 77  
  7.     query: { replSetGetStatus: 1, forShell: 1 }  ntoreturn: 1 ntoskip: 0  
  8. 127.0.0.1:27017  <<--  127.0.0.1:51869   92 bytes  id:a2  162 - 77  
  9.     reply n:1 cursorId: 0  
  10.     { errmsg: "not running with --replSet", ok: 0.0 }  

相当于是数据库把系统执行命令的日志都记录了下来,如果我们对这些日志通过文件保存下来,就可以保存数据操作的历史记录,为数据库的性能分析提供原始材料。

 

2.mongostat

mongostat是Mongodb的一个监控工具,每秒更新一次,通过监控信息可以快速地对数据库进行性能分析。通过mongostat工具可以快速查看运行中的Mongodb实例的统计信息,用法如下:

Shell代码  收藏代码

  1. [root@localhost mongodb]# ./bin/mongostat   
  2. connected to: 127.0.0.1  
  3. insert  query update delete getmore command flushes mapped  vsize    res faults locked % idx miss %     qr|qw   ar|aw  netIn netOut  conn       time   
  4.      0      0      0      0       0       1       0    96m   191m    61m      0        0          0       0|0     0|0    62b     1k     2   00:16:30   
  5.      0      0      0      0       0       1       1    96m   191m    61m      0        0          0       0|0     0|0    62b     1k     2   00:16:31   
  6.      0      0      0      0       0       1       0    96m   191m    61m      0        0          0       0|0     0|0    62b     1k     2   00:16:32   

由上可以看出,执行mongostat命令后,输出了系统内部的运行状态,mongostat具体返回的字段如下:

Shell代码  收藏代码

  1. Fields  
  2.   inserts   - # of inserts per second (* means replicated op)  
  3.   query     - # of queries per second  
  4.   update    - # of updates per second  
  5.   delete    - # of deletes per second  
  6.   getmore   - # of get mores (cursor batch) per second  
  7.   command   - # of commands per second, on a slave its local|replicated  
  8.   flushes   - # of fsync flushes per second  
  9.   mapped    - amount of data mmaped (total data size) megabytes  
  10.   vsize     - virtual size of process in megabytes  
  11.   res       - resident size of process in megabytes  
  12.   faults    - # of pages faults per sec (linux only)  
  13.   locked    - percent of time in global write lock  
  14.   idx miss  - percent of btree page misses (sampled)  
  15.   qr|qw     - queue lengths for clients waiting (read|write)  
  16.   ar|aw     - active clients (read|write)  
  17.   netIn     - network traffic in - bits  
  18.   netOut    - network traffic out - bits  
  19.   conn      - number of open connections  
  20.   set       - replica set name  
  21.   repl      - replication type   
  22.                 M   - master  
  23.                 SEC - secondary  
  24.                 REC - recovering  
  25.                 UNK - unknown  
  26.                 SLV - slave  

 

3.db.serverStatus命令 

我们可以在客户端执行db.serverStatus命令来查看服务器运行状态,用法如下:

Js代码  收藏代码

  1. > db.serverStatus()  
  2. {  
  3.     "host" : "localhost.localdomain",  
  4.     "version" : "2.0.6",              #服务器版本  
  5.     "process" : "mongod",  
  6.     "uptime" : 3937,                  #启动时间  
  7.     "uptimeEstimate" : 3232,  
  8.     "localTime" : ISODate("2012-08-21T16:21:07.562Z"),  
  9.     "globalLock" : {  
  10.         "totalTime" : 3937151885,  
  11.         "lockTime" : 354898,  
  12.         "ratio" : 0.00009014079475879808,  
  13.         "currentQueue" : {  
  14.             "total" : 0,                #当前全部队列量  
  15.             "readers" : 0,           #读请求队列量  
  16.             "writers" : 0             #写请求队列量  
  17.         },  
  18.         "activeClients" : {           
  19.             "total" : 0,                #当前客户端连接量  
  20.             "readers" : 0,           #客户端读请求量  
  21.             "writers" : 0             #客户端写请求量  
  22.         }  
  23.     },  
  24.     "mem" : {  
  25.         "bits" : 32,                       #32位系统  
  26.         "resident" : 61,                #占用物理内存量  
  27.         "virtual" : 191,                 #占用虚拟内存量  
  28.         "supported" : true,          #是否支持扩展内存  
  29.         "mapped" : 96  
  30.     },  
  31.     "connections" : {  
  32.         "current" : 1,                    #当前活动连接数  
  33.         "available" : 818              #剩余空闲连接数  
  34.     },  
  35.     "extra_info" : {  
  36.         "note" : "fields vary by platform",  
  37.         "heap_usage_bytes" : 986232,  
  38.         "page_faults" : 1  
  39.     },  
  40.     "indexCounters" : {  
  41.         "btree" : {  
  42.             "accesses" : 0,         #索引被访问量  
  43.             "hits" : 0,                 #索引命中量  
  44.             "misses" : 0,            #索引偏差量  
  45.             "resets" : 0,  
  46.             "missRatio" : 0         #索引偏差率  
  47.         }  
  48.     },  
  49.     "backgroundFlushing" : {  
  50.         "flushes" : 65,  
  51.         "total_ms" : 6,  
  52.         "average_ms" : 0.09230769230769231,  
  53.         "last_ms" : 0,  
  54.         "last_finished" : ISODate("2012-08-21T16:20:30.560Z")  
  55.     },  
  56.     "cursors" : {  
  57.         "totalOpen" : 0,  
  58.         "clientCursors_size" : 0,  
  59.         "timedOut" : 0  
  60.     },  
  61.     "network" : {  
  62.         "bytesIn" : 12264,         #发给服务器的数据量(byte)  
  63.         "bytesOut" : 171619,    #此服务器发出的数据量(byte)  
  64.         "numRequests" : 193    #发给此服务器的请求量  
  65.     },  
  66.     "opcounters" : {  
  67.         "insert" : 1,                    #插入操作的量  
  68.         "query" : 44,                  #查询操作的量  
  69.         "update" : 0,                  #更新操作的量  
  70.         "delete" : 0,                   #删除操作的量  
  71.         "getmore" : 0,  
  72.         "command" : 152           #其它操作的量  
  73.     },  
  74.     "asserts" : {  
  75.         "regular" : 0,  
  76.         "warning" : 0,  
  77.         "msg" : 0,  
  78.         "user" : 0,  
  79.         "rollovers" : 0  
  80.     },  
  81.     "writeBacksQueued" : false,  
  82.     "ok" : 1  
  83. }  
  84. >   

db.serverStatus与mongostat命令类似,db.serverStatus提示的信息更加具体、全面,不过db.serverStatus命令查看到的数据是静态的,不是实时的。

更多关于服务器状态监控信息,参见官方文档:http://cn.docs.mongodb.org/master/reference/server-status-index/

 

4.db.stats命令

与db.serverStatus命令查看服务器实例信息不同,db.stats命令是用来查看特定数据库的详细运行状态,分析粒度更细。具体使用方法如下(目前连接的是test库):

 

Js代码  收藏代码

  1. > db.stats()  
  2. {  
  3.     "db" : "test",               #查看的数据库名称  
  4.     "collections" : 19,        #数据库中的集合数  
  5.     "objects" : 119,           #对象的数量  
  6.     "avgObjSize" : 612.4033613445379,   #对象平均大小  
  7.     "dataSize" : 72876,                  #数据大小  
  8.     "storageSize" : 1196032,         #占用存储空间大小  
  9.     "numExtents" : 21,                   #数据库所有集合中的片区计数  
  10.     "indexes" : 21,                         #索引数量  
  11.     "indexSize" : 171696,               #索引大小  
  12.     "fileSize" : 50331648,               #文件大小  
  13.     "nsSizeMB" : 16,                       #数据库命名空间文件的总大小  
  14.     "ok" : 1  
  15. }  
  16. >    

源文章:http://chenzhou123520.iteye.com/blog/1651494

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值