您的位置:首页 > 数据库 > Mongodb

第五章:mongodb 性能监控

2015-06-12 15:51 597 查看

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 的监控都是非常方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: