您好,登錄后才能下訂單哦!
一、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 } 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 <<-- 127.0.0.1:38500 92 bytes id:531c3856 1394358358 - 1400815120 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 <<-- 127.0.0.1:38500 293 bytes id:531c3857 1394358359 - 1400815121 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 <<-- 127.0.0.1:38500 92 bytes id:531c3858 1394358360 - 1400815122 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
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 的監控都是非常方便的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。