MongoDB 監(jiān)控工具mongostat和mongotop的使用
MongoDB中自帶兩個監(jiān)控的工具,分別是mongostat和mongotop,今天我們看看這兩個工具的使用方法。
mongostat
mongostat工具提供了mongod和mongos的運行狀態(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)鍵列說明一下:
insert、query、update、delete 分別代表每秒的操作次數(shù)
getmore代表當前批量查詢得到的文檔個數(shù),如果查詢的文檔多,mongodb會自動批量查詢
command代表primary和secondary的節(jié)點指令個數(shù),如果是在從庫上執(zhí)行,則代表從庫執(zhí)行的命令數(shù)據(jù)以及復制從庫的其他實例的命令執(zhí)行情況,二者通過|分割。
dirty代表wiretiger存儲引擎的緩沖中臟字節(jié)的百分比。
used代表已經(jīng)使用的wiretiger存儲引擎緩存比例
flushed對于wireTiger存儲引擎,表示觸發(fā)檢查點的次數(shù);對于MMAPv1存儲引擎,表示當前將數(shù)據(jù)寫入磁盤的次數(shù)
vsize:程序應(yīng)用的虛擬內(nèi)存大小
res:當前已經(jīng)使用的物理內(nèi)存量,單位為Mb
qrw:等待讀取的文檔個數(shù)與等待寫入的文檔個數(shù)
arw:正在執(zhí)行的讀取文檔個數(shù)與正在執(zhí)行的寫入文檔個數(shù)
net_in|net_out 進出的網(wǎng)絡(luò)流量
conn:當前連接數(shù)
需要注意的是mongostat是一個持續(xù)輸出的命令,只要我們不手動終止,它會一直運行,輸出到屏幕上。
mongotop
相比mongostat,mongotop輸出的內(nè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:讀寫花費時間(單位是ms)
read:讀花費時間
write:寫花費時間
mongotop輸出的內(nèi)容表示每個集合的每個表讀寫情況,它打印了每個庫里面讀寫花費的時長,單位是ms,可以幫助快速定位讀寫瓶頸。
mongotop這個命令只運行一次,如果想每間隔一段時間,就運行一次,則可以使用:
mongotop 30
這樣的寫法,可以讓mongotop命令每30s運行一次,這樣可以持續(xù)的檢測mongodb的運行狀態(tài)。
除了這兩個工具之外,還有一些其他的命令可以查看集群的狀態(tài):
- db.serverStatus()
- db.stats()
- db.collStats()
- rs.status()
下面分別解釋這幾個命令。
db.serverStatus()
這條命令會列出MongoDB的整體情況,包含主機名字、版本、進程、連續(xù)運行時間、連接狀態(tài)以及操作狀態(tài)。因為它顯示的結(jié)果比較長,這里我們只說說常用的幾個信息:
host:主機名字
version:MongoDB版本
process:PID進程號
uptime:主機的運行時間
asserts:MongoDB啟動后報警的統(tǒng)計數(shù)量
connections:MongoDB的連接統(tǒng)計信息
network:MongoDB的網(wǎng)路情況
storageEngine:存儲引擎信息
mem:當前使用的內(nèi)存信息
db.stats()
該命令顯示的是db的信息,沒有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:代表當前數(shù)據(jù)庫的名稱
collections:當前數(shù)據(jù)庫中集合的數(shù)量
view:當前數(shù)據(jù)庫中視圖的數(shù)量
objects:當前數(shù)據(jù)庫中所有文檔的數(shù)量
avgObjSize:數(shù)據(jù)庫中文檔的平均大小
dataSize:當前數(shù)據(jù)庫的數(shù)據(jù)大小,單位是byte
storageSize:當前數(shù)據(jù)庫占用硬盤空間的大小,單位是byte
numExtents:當前數(shù)據(jù)庫中所有集合Extents擴展的數(shù)量統(tǒng)計
indexes:當前數(shù)據(jù)庫中的索引數(shù)量
indexSize:當前數(shù)據(jù)庫中的索引代銷,單位是byte
fsUsedSize:當前MongoDb所在的硬盤已經(jīng)使用的空間大小
fsTotalSize:當前MongoDb所在的硬盤總共的空間大小
ok:1表示成功,0表示失敗
db.coll.stats()
這個函數(shù)返回的是集合的狀態(tài)信息,由于輸出的內(nèi)容很多,這里我們僅說明重要的幾個部分:
> db.yeyz.stats() { "ns" : "test.yeyz", "size" : 115, "count" : 3, "avgObjSize" : 38, "storageSize" : 36864, "capped" : false, "wiredTiger" : { "metadata" : { "formatVersion" : 1 },
ns:當前集合的名稱
size:當前集合的大小,單位是byte
count:當前集合的文檔數(shù)量
nindexes:當前集合中索引的數(shù)量
totalIndexSize:當前集合中所有索引的大小,單位是byte
rs.status()
這個函數(shù)是用來查看副本集中的成員的狀態(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") } }
下面對常用的字段進行描述:
set:副本集的名稱
date:當前的時間
myState:當前副本集節(jié)點的狀態(tài)
term:副本集的選舉數(shù)
syncingTo:從哪個副本集同步數(shù)據(jù),如果這里是空值,則代表當前副本是primary
syncSourceHost、syncSourceId分別代表同步目標節(jié)點的host和id值
heartbeatIntervalMills:副本集心跳頻率,單位為ms
optimes:副本集同步的進度信息
lastStableCheckPointTimestamp:列出最近的檢查點的時間。
members:列出副本集中每個成員的信息數(shù)據(jù)。
以上就是MongoDB 監(jiān)控工具mongostat和mongotop的使用的詳細內(nèi)容,更多關(guān)于MongoDB 監(jiān)控工具的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MongoDB執(zhí)行mongoexport時的異常及分析(數(shù)字類型的查詢)
這篇文章主要給大家介紹了關(guān)于MongoDB執(zhí)行mongoexport時的異常及分析(數(shù)字類型的查詢)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧2018-09-09MongoDB多數(shù)據(jù)源配置與切換的方法示例
這篇文章主要介紹了MongoDB多數(shù)據(jù)源配置與切換的方法示例,如何在SpringBoot應(yīng)用中配置并使用兩個MongoDB數(shù)據(jù)源,包括YAML配置文件的編寫,避免默認MongoTemplate注入,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下2024-07-07MongoDB中的主從同步配置和mongod相關(guān)啟動命令講解
這篇文章主要介紹了MongoDB中的主從同步配置和mongod相關(guān)啟動命令講解,文中也羅列了很多其他常用的mongod命令參數(shù),需要的朋友可以參考下2016-03-03Windows系統(tǒng)下安裝MongoDB并內(nèi)網(wǎng)穿透遠程連接
這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下安裝MongoDB并內(nèi)網(wǎng)穿透遠程連接的相關(guān)資料,文中通過圖文將步驟介紹的非常詳細,對大家學習或者使用MongoDB具有一定的參考學習價值,需要的朋友可以參考下2023-03-03MongoDB的聚合框架Aggregation Framework入門學習教程
MongoDB中的聚合aggregate主要用于處理數(shù)據(jù)計算,這里我們就來詳細整理MongoDB的聚合框架Aggregation Framework入門學習教程,需要的朋友可以參考下2016-07-07