MongoDB 監(jiān)控工具mongostat和mongotop的使用
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ù)寫(xiě)入磁盤(pán)的次數(shù)
vsize:程序應(yīng)用的虛擬內(nèi)存大小
res:當(dāng)前已經(jīng)使用的物理內(nèi)存量,單位為Mb
qrw:等待讀取的文檔個(gè)數(shù)與等待寫(xiě)入的文檔個(gè)數(shù)
arw:正在執(zhí)行的讀取文檔個(gè)數(shù)與正在執(zhí)行的寫(xiě)入文檔個(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:讀寫(xiě)花費(fèi)時(shí)間(單位是ms)
read:讀花費(fèi)時(shí)間
write:寫(xiě)花費(fèi)時(shí)間
mongotop輸出的內(nèi)容表示每個(gè)集合的每個(gè)表讀寫(xiě)情況,它打印了每個(gè)庫(kù)里面讀寫(xiě)花費(fèi)的時(shí)長(zhǎng),單位是ms,可以幫助快速定位讀寫(xiě)瓶頸。
mongotop這個(gè)命令只運(yùn)行一次,如果想每間隔一段時(shí)間,就運(yùn)行一次,則可以使用:
mongotop 30
這樣的寫(xiě)法,可以讓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ù)占用硬盤(pán)空間的大小,單位是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ù)中的索引代銷(xiāo),單位是byte
fsUsedSize:當(dāng)前MongoDb所在的硬盤(pán)已經(jīng)使用的空間大小
fsTotalSize:當(dāng)前MongoDb所在的硬盤(pán)總共的空間大小
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ù)類(lèi)型和基本操作
- MongoDB 簡(jiǎn)單入門(mén)教程(安裝、基本概念、創(chuàng)建用戶)
- MongoDB 主分片(primary shard)相關(guān)總結(jié)
- 詳解MongoDB的角色管理
- MongoDB 副本集的搭建過(guò)程
- MongoDB的chunk詳解
相關(guān)文章
MongoDB執(zhí)行mongoexport時(shí)的異常及分析(數(shù)字類(lèi)型的查詢)
這篇文章主要給大家介紹了關(guān)于MongoDB執(zhí)行mongoexport時(shí)的異常及分析(數(shù)字類(lèi)型的查詢)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09MongoDB多數(shù)據(jù)源配置與切換的方法示例
這篇文章主要介紹了MongoDB多數(shù)據(jù)源配置與切換的方法示例,如何在SpringBoot應(yīng)用中配置并使用兩個(gè)MongoDB數(shù)據(jù)源,包括YAML配置文件的編寫(xiě),避免默認(rèn)MongoTemplate注入,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07MongoDB如何更新多級(jí)文檔的數(shù)據(jù)
MongoDB 這類(lèi)文檔型數(shù)據(jù)庫(kù)與關(guān)系型數(shù)據(jù)庫(kù)最大的差別就是所有數(shù)據(jù)是按文檔存儲(chǔ)的,因此更新時(shí)會(huì)涉及深層數(shù)據(jù)更新,例如更如何新某個(gè)對(duì)象的下級(jí)對(duì)象屬性。本篇介紹如何更新多級(jí)文檔的數(shù)據(jù)。2021-06-06MongoDB中的主從同步配置和mongod相關(guān)啟動(dòng)命令講解
這篇文章主要介紹了MongoDB中的主從同步配置和mongod相關(guān)啟動(dòng)命令講解,文中也羅列了很多其他常用的mongod命令參數(shù),需要的朋友可以參考下2016-03-03MongoDB社區(qū)版和企業(yè)版的差別對(duì)照表
這篇文章主要介紹了MongoDB社區(qū)版和企業(yè)版的差別對(duì)照表,本文同時(shí)提供了中文和英文版的對(duì)照表,需要的朋友可以參考下2014-10-10PHP中安裝使用mongodb數(shù)據(jù)庫(kù)
最近有個(gè)項(xiàng)目,需要用php操作mongoDb數(shù)據(jù),所以了解下mongoDb為此整理了下,有需要的小伙伴可以參考下2015-12-12Windows系統(tǒng)下安裝MongoDB并內(nèi)網(wǎng)穿透遠(yuǎn)程連接
這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下安裝MongoDB并內(nèi)網(wǎng)穿透遠(yuǎn)程連接的相關(guān)資料,文中通過(guò)圖文將步驟介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-03-03MongoDB的聚合框架Aggregation Framework入門(mén)學(xué)習(xí)教程
MongoDB中的聚合aggregate主要用于處理數(shù)據(jù)計(jì)算,這里我們就來(lái)詳細(xì)整理MongoDB的聚合框架Aggregation Framework入門(mén)學(xué)習(xí)教程,需要的朋友可以參考下2016-07-07MongoDB磁盤(pán)IO問(wèn)題的3種解決方法
磁盤(pán)IO是不可避免的,除去減少或延緩磁盤(pán)操作,也需要盡量的增強(qiáng)磁盤(pán)IO性能和吞吐量。下面這篇文章主要給大家介紹了關(guān)于MongoDB磁盤(pán)IO問(wèn)題的3種解決方法,需要的朋友可以參考借鑒,需要的朋友們下面來(lái)一起看看吧2018-07-07