目錄
- mongostat
- mongotop
- 除了這兩個(gè)工具之外,還有一些其他的命令可以查看集群的狀態(tài):
- db.serverStatus()
- db.stats()
- db.coll.stats()
- rs.status()
MongoDB中自帶兩個(gè)監(jiān)控的工具,分別是mongostat和mongotop,今天我們看看這兩個(gè)工具的使用方法。
mongostat
mongostat工具提供了mongod和mongos的運(yùn)行狀態(tài)和數(shù)據(jù),可以從mongostat工具的執(zhí)行結(jié)果中獲取如下信息:
[root@VM-0-14-centos ~]# mongostat --port=27018 -u "yeyz" --authenticationDatabase "admin" -p "123456"
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn set repl time
*0 *0 *0 *0 0 14|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 1.66k 83.8k 22 sharding_yeyz PRI Nov 19 11:42:08.431
*0 *0 *0 *0 0 13|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 1.93k 71.7k 22 sharding_yeyz PRI Nov 19 11:42:09.434
*0 *0 *0 *0 0 12|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 1.39k 70.5k 22 sharding_yeyz PRI Nov 19 11:42:10.433
*0 *0 *0 *0 0 13|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 1.93k 71.8k 22 sharding_yeyz PRI Nov 19 11:42:11.433
*0 *0 *0 *0 2 15|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 3.72k 74.0k 22 sharding_yeyz PRI Nov 19 11:42:12.432
*0 *0 *0 *0 0 13|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 1.93k 71.8k 22 sharding_yeyz PRI Nov 19 11:42:13.432
*0 *0 *0 *0 0 11|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 1.39k 70.4k 22 sharding_yeyz PRI Nov 19 11:42:14.433
*0 *0 *0 *0 0 14|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 1.98k 72.6k 22 sharding_yeyz PRI Nov 19 11:42:15.434
*0 *0 *0 *0 0 15|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 2.06k 137k 22 sharding_yeyz PRI Nov 19 11:42:16.431
*0 *0 *0 *0 3 17|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 6.47k 77.0k 22 sharding_yeyz PRI Nov 19 11:42:17.432
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn set repl time
*0 *0 *0 *0 0 14|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 2.23k 73.1k 22 sharding_yeyz PRI Nov 19 11:42:18.432
*0 *0 *0 *0 0 16|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 2.49k 73.7k 22 sharding_yeyz PRI Nov 19 11:42:19.431
*0 *0 *0 *0 0 11|0 0.5% 0.6% 0 1.41G 59.0M 0|0 1|0 1.39k 70.2k 22 sharding_yeyz PRI Nov 19 11:42:20.435
這里有必要將其中的某些關(guān)鍵列說(shuō)明一下:
insert、query、update、delete 分別代表每秒的操作次數(shù)
getmore代表當(dāng)前批量查詢得到的文檔個(gè)數(shù),如果查詢的文檔多,mongodb會(huì)自動(dòng)批量查詢
command代表primary和secondary的節(jié)點(diǎn)指令個(gè)數(shù),如果是在從庫(kù)上執(zhí)行,則代表從庫(kù)執(zhí)行的命令數(shù)據(jù)以及復(fù)制從庫(kù)的其他實(shí)例的命令執(zhí)行情況,二者通過(guò)|分割。
dirty代表wiretiger存儲(chǔ)引擎的緩沖中臟字節(jié)的百分比。
used代表已經(jīng)使用的wiretiger存儲(chǔ)引擎緩存比例
flushed對(duì)于wireTiger存儲(chǔ)引擎,表示觸發(fā)檢查點(diǎn)的次數(shù);對(duì)于MMAPv1存儲(chǔ)引擎,表示當(dāng)前將數(shù)據(jù)寫入磁盤的次數(shù)
vsize:程序應(yīng)用的虛擬內(nèi)存大小
res:當(dāng)前已經(jīng)使用的物理內(nèi)存量,單位為Mb
qrw:等待讀取的文檔個(gè)數(shù)與等待寫入的文檔個(gè)數(shù)
arw:正在執(zhí)行的讀取文檔個(gè)數(shù)與正在執(zhí)行的寫入文檔個(gè)數(shù)
net_in|net_out 進(jìn)出的網(wǎng)絡(luò)流量
conn:當(dāng)前連接數(shù)
需要注意的是mongostat是一個(gè)持續(xù)輸出的命令,只要我們不手動(dòng)終止,它會(huì)一直運(yùn)行,輸出到屏幕上。
mongotop
相比mongostat,mongotop輸出的內(nèi)容有限,來(lái)看下面的例子:
[root@VM-0-14-centos ~]# mongotop --port=27018 -u "yeyz" --authenticationDatabase "admin" -p "123456"
2020-11-19T11:53:22.898+0800 connected to: 127.0.0.1:27018
ns total read write 2020-11-19T11:53:23+08:00
admin.system.keys 0ms 0ms 0ms
admin.system.roles 0ms 0ms 0ms
admin.system.users 0ms 0ms 0ms
admin.system.version 0ms 0ms 0ms
config.cache.chunks.config.system.sessions 0ms 0ms 0ms
config.cache.chunks.test.test0 0ms 0ms 0ms
config.cache.chunks.test.test1 0ms 0ms 0ms
config.cache.collections 0ms 0ms 0ms
config.cache.databases 0ms 0ms 0ms
config.system.sessions 0ms 0ms 0ms
ns,集合名字
total:讀寫花費(fèi)時(shí)間(單位是ms)
read:讀花費(fèi)時(shí)間
write:寫花費(fèi)時(shí)間
mongotop輸出的內(nèi)容表示每個(gè)集合的每個(gè)表讀寫情況,它打印了每個(gè)庫(kù)里面讀寫花費(fèi)的時(shí)長(zhǎng),單位是ms,可以幫助快速定位讀寫瓶頸。
mongotop這個(gè)命令只運(yùn)行一次,如果想每間隔一段時(shí)間,就運(yùn)行一次,則可以使用:
mongotop 30
這樣的寫法,可以讓mongotop命令每30s運(yùn)行一次,這樣可以持續(xù)的檢測(cè)mongodb的運(yùn)行狀態(tài)。
除了這兩個(gè)工具之外,還有一些其他的命令可以查看集群的狀態(tài):
- db.serverStatus()
- db.stats()
- db.collStats()
- rs.status()
下面分別解釋這幾個(gè)命令。
db.serverStatus()
這條命令會(huì)列出MongoDB的整體情況,包含主機(jī)名字、版本、進(jìn)程、連續(xù)運(yùn)行時(shí)間、連接狀態(tài)以及操作狀態(tài)。因?yàn)樗@示的結(jié)果比較長(zhǎng),這里我們只說(shuō)說(shuō)常用的幾個(gè)信息:
host:主機(jī)名字
version:MongoDB版本
process:PID進(jìn)程號(hào)
uptime:主機(jī)的運(yùn)行時(shí)間
asserts:MongoDB啟動(dòng)后報(bào)警的統(tǒng)計(jì)數(shù)量
connections:MongoDB的連接統(tǒng)計(jì)信息
network:MongoDB的網(wǎng)路情況
storageEngine:存儲(chǔ)引擎信息
mem:當(dāng)前使用的內(nèi)存信息
db.stats()
該命令顯示的是db的信息,沒(méi)有server層面的信息,我們解釋下下面db的意思。
> db.stats()
{
"db" : "admin",
"collections" : 3,
"views" : 0,
"objects" : 6,
"avgObjSize" : 306.5,
"dataSize" : 1839,
"storageSize" : 106496,
"numExtents" : 0,
"indexes" : 5,
"indexSize" : 139264,
"fsUsedSize" : 38917517312,
"fsTotalSize" : 52709240832,
"ok" : 1
}
db:代表當(dāng)前數(shù)據(jù)庫(kù)的名稱
collections:當(dāng)前數(shù)據(jù)庫(kù)中集合的數(shù)量
view:當(dāng)前數(shù)據(jù)庫(kù)中視圖的數(shù)量
objects:當(dāng)前數(shù)據(jù)庫(kù)中所有文檔的數(shù)量
avgObjSize:數(shù)據(jù)庫(kù)中文檔的平均大小
dataSize:當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)大小,單位是byte
storageSize:當(dāng)前數(shù)據(jù)庫(kù)占用硬盤空間的大小,單位是byte
numExtents:當(dāng)前數(shù)據(jù)庫(kù)中所有集合Extents擴(kuò)展的數(shù)量統(tǒng)計(jì)
indexes:當(dāng)前數(shù)據(jù)庫(kù)中的索引數(shù)量
indexSize:當(dāng)前數(shù)據(jù)庫(kù)中的索引代銷,單位是byte
fsUsedSize:當(dāng)前MongoDb所在的硬盤已經(jīng)使用的空間大小
fsTotalSize:當(dāng)前MongoDb所在的硬盤總共的空間大小
ok:1表示成功,0表示失敗
db.coll.stats()
這個(gè)函數(shù)返回的是集合的狀態(tài)信息,由于輸出的內(nèi)容很多,這里我們僅說(shuō)明重要的幾個(gè)部分:
> db.yeyz.stats()
{
"ns" : "test.yeyz",
"size" : 115,
"count" : 3,
"avgObjSize" : 38,
"storageSize" : 36864,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
ns:當(dāng)前集合的名稱
size:當(dāng)前集合的大小,單位是byte
count:當(dāng)前集合的文檔數(shù)量
nindexes:當(dāng)前集合中索引的數(shù)量
totalIndexSize:當(dāng)前集合中所有索引的大小,單位是byte
rs.status()
這個(gè)函數(shù)是用來(lái)查看副本集中的成員的狀態(tài)信息,如下:
yeyz_repl0:PRIMARY> rs.status()
{
"set" : "yeyz_repl0",
"date" : ISODate("2020-11-20T15:35:12.386Z"),
"myState" : 1,
"term" : NumberLong(46),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1605886492, 1),
"t" : NumberLong(46)
},
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1605886492, 1),
"t" : NumberLong(46)
},
"appliedOpTime" : {
"ts" : Timestamp(1605886502, 1),
"t" : NumberLong(46)
},
"durableOpTime" : {
"ts" : Timestamp(1605886502, 1),
"t" : NumberLong(46)
}
},
"lastStableCheckpointTimestamp" : Timestamp(1605886462, 1),
"members" : [],
"ok" : 1,
"operationTime" : Timestamp(1605886502, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1605886502, 1),
"signature" : {
"hash" : BinData(0,"C8IXyxh/1zCqWtwxI1mfMgq9DAE="),
"keyId" : NumberLong("6891183663887679489")
}
}
下面對(duì)常用的字段進(jìn)行描述:
set:副本集的名稱
date:當(dāng)前的時(shí)間
myState:當(dāng)前副本集節(jié)點(diǎn)的狀態(tài)
term:副本集的選舉數(shù)
syncingTo:從哪個(gè)副本集同步數(shù)據(jù),如果這里是空值,則代表當(dāng)前副本是primary
syncSourceHost、syncSourceId分別代表同步目標(biāo)節(jié)點(diǎn)的host和id值
heartbeatIntervalMills:副本集心跳頻率,單位為ms
optimes:副本集同步的進(jìn)度信息
lastStableCheckPointTimestamp:列出最近的檢查點(diǎn)的時(shí)間。
members:列出副本集中每個(gè)成員的信息數(shù)據(jù)。
以上就是MongoDB 監(jiān)控工具mongostat和mongotop的使用的詳細(xì)內(nèi)容,更多關(guān)于MongoDB 監(jiān)控工具的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- 詳解MongoDB中的日志模塊
- MongoDB聚合group的操作指南
- java操作mongodb之多表聯(lián)查的實(shí)現(xiàn)($lookup)
- 2021最新版windows10系統(tǒng)MongoDB數(shù)據(jù)庫(kù)安裝及配置環(huán)境
- MongoDB 常用的數(shù)據(jù)類型和基本操作
- MongoDB 簡(jiǎn)單入門教程(安裝、基本概念、創(chuàng)建用戶)
- MongoDB 主分片(primary shard)相關(guān)總結(jié)
- 詳解MongoDB的角色管理
- MongoDB 副本集的搭建過(guò)程
- MongoDB的chunk詳解