主頁 > 知識庫 > MongoDB 監(jiān)控工具mongostat和mongotop的使用

MongoDB 監(jiān)控工具mongostat和mongotop的使用

熱門標簽:地方門戶網(wǎng)站 Linux服務(wù)器 AI電銷 百度競價排名 鐵路電話系統(tǒng) 呼叫中心市場需求 服務(wù)外包 網(wǎng)站排名優(yōu)化

    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)文章!

您可能感興趣的文章:
  • 詳解MongoDB中的日志模塊
  • MongoDB聚合group的操作指南
  • java操作mongodb之多表聯(lián)查的實現(xiàn)($lookup)
  • 2021最新版windows10系統(tǒng)MongoDB數(shù)據(jù)庫安裝及配置環(huán)境
  • MongoDB 常用的數(shù)據(jù)類型和基本操作
  • MongoDB 簡單入門教程(安裝、基本概念、創(chuàng)建用戶)
  • MongoDB 主分片(primary shard)相關(guān)總結(jié)
  • 詳解MongoDB的角色管理
  • MongoDB 副本集的搭建過程
  • MongoDB的chunk詳解

標簽:湖南 黃山 崇左 湘潭 銅川 仙桃 衡水 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《MongoDB 監(jiān)控工具mongostat和mongotop的使用》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266