php mongodb 性能监控,MongoDB实战(8)性能监控

一、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 <

reply n:1 cursorId: 0

{ you: "127.0.0.1:38500", ok: 1.0 }

127.0.0.1:38500 -->> 127.0.0.1:27017 admin.$cmd 80 bytes id:537ebe10 1400815120

query: { replSetGetStatus: 1, forShell: 1 } ntoreturn: 1 ntoskip: 0

127.0.0.1:27017 <

reply n:1 cursorId: 0

{ errmsg: "not running with --replSet", ok: 0.0 }

127.0.0.1:38500 -->> 127.0.0.1:27017 admin.$cmd 67 bytes id:537ebe11 1400815121

query: { listDatabases: 1.0 } ntoreturn: -1 ntoskip: 0

127.0.0.1:27017 <

reply n:1 cursorId: 0

{ databases: [ { name: "foo", sizeOnDisk: 67108864.0, empty: false }, { name: "test",

sizeOnDisk: 67108864.0, empty: false }, { name: "admin", sizeOnDisk: 67108864.0, empty: false },

{ name: "local", sizeOnDisk: 1.0, empty: true } ], totalSize: 201326592.0, ok: 1.0 }

127.0.0.1:38500 -->> 127.0.0.1:27017 admin.$cmd 80 bytes id:537ebe12 1400815122

query: { replSetGetStatus: 1, forShell: 1 } ntoreturn: 1 ntoskip: 0

127.0.0.1:27017 <

reply n:1 cursorId: 0

{ errmsg: "not running with --replSet", ok: 0.0 }

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

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

二、mongostat

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

[root@localhost bin]# ./mongostat

下面是执行结果(部分):./mongostat

connected to: 127.0.0.1

insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn time

*0 *0 *0 *0 0 1|0 0 160m 507m 50m 0 test:0.0% 0 0|0 0|0 62b 2k 1 20:21:26

*0 *0 *0 *0 0 1|0 0 160m 507m 50m 0 test:0.0% 0 0|0 0|0 62b 2k 1 20:21:27

*0 *0 *0 *0 0 1|0 0 160m 507m 50m 0 test:0.0% 0 0|0 0|0 62b 2k 1 20:21:28

*0 2 *0 *0 0 1|0 1 160m 507m 50m 0 test:0.0% 0 0|0 0|0 62b 2k 1 20:21:29

*0 *0 *0 *0 0 1|0 0 160m 507m 50m 0 test:0.0% 0 0|0 0|0 62b 2k 1 20:21:30

字段说明:

insert: 每秒插入量

query: 每秒查询量

update: 每秒更新量

delete: 每秒删除量

locked: 锁定量

qr | qw: 客户端查询排队长度(读|写)

ar | aw: 活跃客户端量(读|写)

conn: 连接数

time: 当前时间

它每秒钟刷新一次状态值,提供良好的可读性,通过这些参数可以观察到一个整体的性能情况。

三、DB信息

1、db.serverStatus

php mongodb 性能监控,MongoDB实战(8)性能监控_第1张图片

php mongodb 性能监控,MongoDB实战(8)性能监控_第2张图片

php mongodb 性能监控,MongoDB实战(8)性能监控_第3张图片

2、db.stats

db.stats 查看数据库状态信息。使用样例如下:> db.stats()

{

"db" : "test",

"collections" : 9, #collection数量

"objects" : 52, #对象数量

"avgObjSize" : 60.46153846153846, #对象平均大小

"dataSize" : 3144, #数据大小

"storageSize" : 249856,#数据大小含预分配空间

"numExtents" : 9,#事件数量

"indexes" : 9,#索引数量

"indexSize" : 73584,#索引大小

"fileSize" : 201326592,#文件大小

"nsSizeMB" : 16,

"dataFileVersion" : {

"major" : 4,

"minor" : 5

},

"ok" : 1

}

MongoDB 从一面世就得到众多开源爱好者和团队的重视,在常用的监控框架如 cacti、

Nagios、Zabbix 等基础上进行扩展,进行 MongoDB 的监控都是非常方便的。

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