• 售前

  • 售后

热门帖子
入门百科

MongoDB 监控工具mongostat和mongotop的使用

[复制链接]
却写杂布计 显示全部楼层 发表于 2021-8-14 15:06:31 |阅读模式 打印 上一主题 下一主题
目次


  • mongostat
  • mongotop
  • 除了这两个工具之外,还有一些其他的命令可以检察集群的状态:

    • db.serverStatus()
    • db.stats()
    • db.coll.stats()
    • rs.status()

    MongoDB中自带两个监控的工具,分别是mongostat和mongotop,本日我们看看这两个工具的使用方法。

mongostat

mongostat工具提供了mongod和mongos的运行状态和数据,可以从mongostat工具的执行效果中获取如下信息:
  1. [root@VM-0-14-centos ~]# mongostat --port=27018 -u "yeyz" --authenticationDatabase "admin" -p "123456"
  2. insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn  set repl  time
  3. *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
  4. *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
  5. *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
  6. *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
  7. *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
  8. *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
  9. *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
  10. *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
  11. *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
  12. *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
  13. insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn  set repl  time
  14. *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
  15. *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
  16. *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
复制代码
这里有须要将此中的某些关键列说明一下:
insert、query、update、delete 分别代表每秒的利用次数
getmore代表当前批量查询得到的文档个数,如果查询的文档多,mongodb会主动批量查询
command代表primary和secondary的节点指令个数,如果是在从库上执行,则代表从库执行的命令数据以及复制从库的其他实例的命令执行情况,二者通过|分割。
dirty代表wiretiger存储引擎的缓冲中脏字节的百分比。
used代表已经使用的wiretiger存储引擎缓存比例
flushed对于wireTiger存储引擎,体现触发查抄点的次数;对于MMAPv1存储引擎,体现当前将数据写入磁盘的次数
vsize:程序应用的虚拟内存大小
res:当前已经使用的物理内存量,单位为Mb
qrw:等候读取的文档个数与等候写入的文档个数
arw:正在执行的读取文档个数与正在执行的写入文档个数
net_in|net_out  进出的网络流量
conn:当前连接数
需要注意的是mongostat是一个一连输出的命令,只要我们不手动停止,它会一直运行,输出到屏幕上。

mongotop

相比mongostat,mongotop输出的内容有限,来看下面的例子:
  1. [root@VM-0-14-centos ~]# mongotop --port=27018 -u "yeyz" --authenticationDatabase "admin" -p "123456"
  2. 2020-11-19T11:53:22.898+0800 connected to: 127.0.0.1:27018
  3.      ns total read write 2020-11-19T11:53:23+08:00
  4.     admin.system.keys 0ms 0ms 0ms   
  5.    admin.system.roles 0ms 0ms 0ms   
  6.    admin.system.users 0ms 0ms 0ms   
  7.    admin.system.version 0ms 0ms 0ms   
  8. config.cache.chunks.config.system.sessions 0ms 0ms 0ms   
  9.   config.cache.chunks.test.test0 0ms 0ms 0ms   
  10.   config.cache.chunks.test.test1 0ms 0ms 0ms   
  11.    config.cache.collections 0ms 0ms 0ms   
  12.    config.cache.databases 0ms 0ms 0ms   
  13.    config.system.sessions 0ms 0ms 0ms
复制代码
ns,聚集名字
total:读写花费时间(单位是ms)
read:读花费时间
write:写花费时间
mongotop输出的内容体现每个聚集的每个表读写情况,它打印了每个库里面读写花费的时长,单位是ms,可以资助快速定位读写瓶颈。
mongotop这个命令只运行一次,如果想每间隔一段时间,就运行一次,则可以使用:
mongotop 30
这样的写法,可以让mongotop命令每30s运行一次,这样可以一连的检测mongodb的运行状态。

除了这两个工具之外,还有一些其他的命令可以检察集群的状态:

      
  • db.serverStatus()  
  • db.stats()  
  • db.collStats()  
  • rs.status()
下面分别表明这几个命令。

db.serverStatus()

这条命令会列出MongoDB的整体情况,包含主机名字、版本、进程、一连运行时间、连接状态以及利用状态。由于它显示的效果比力长,这里我们只说说常用的几个信息:
host:主机名字
version:MongoDB版本
process:PID进程号
uptime:主机的运行时间
asserts:MongoDB启动后报警的统计数量
connections:MongoDB的连接统计信息
network:MongoDB的网路情况
storageEngine:存储引擎信息
mem:当前使用的内存信息

db.stats()

该命令显示的是db的信息,没有server层面的信息,我们表明下下面db的意思。
  1. > db.stats()
  2. {
  3. "db" : "admin",
  4. "collections" : 3,
  5. "views" : 0,
  6. "objects" : 6,
  7. "avgObjSize" : 306.5,
  8. "dataSize" : 1839,
  9. "storageSize" : 106496,
  10. "numExtents" : 0,
  11. "indexes" : 5,
  12. "indexSize" : 139264,
  13. "fsUsedSize" : 38917517312,
  14. "fsTotalSize" : 52709240832,
  15. "ok" : 1
  16. }
复制代码
db:代表当前数据库的名称
collections:当前数据库中聚集的数量
view:当前数据库中视图的数量
objects:当前数据库中全部文档的数量
avgObjSize:数据库中文档的均匀大小
dataSize:当前数据库的数据大小,单位是byte
storageSize:当前数据库占用硬盘空间的大小,单位是byte
numExtents:当前数据库中全部聚集Extents扩展的数量统计
indexes:当前数据库中的索引数量
indexSize:当前数据库中的索引代销,单位是byte
fsUsedSize:当前MongoDb所在的硬盘已经使用的空间大小
fsTotalSize:当前MongoDb所在的硬盘统共的空间大小
ok:1体现乐成,0体现失败

db.coll.stats()

这个函数返回的是聚集的状态信息,由于输出的内容很多,这里我们仅说明重要的几个部分:
  1. > db.yeyz.stats()
  2. {
  3. "ns" : "test.yeyz",
  4. "size" : 115,
  5. "count" : 3,
  6. "avgObjSize" : 38,
  7. "storageSize" : 36864,
  8. "capped" : false,
  9. "wiredTiger" : {
  10.   "metadata" : {
  11.    "formatVersion" : 1
  12.   },
复制代码
ns:当前聚集的名称
size:当前聚集的大小,单位是byte
count:当前聚集的文档数量
nindexes:当前聚集中索引的数量
totalIndexSize:当前聚集中全部索引的大小,单位是byte

rs.status()

这个函数是用来检察副本集中的成员的状态信息,如下:
  1. yeyz_repl0:PRIMARY> rs.status()
  2. {
  3. "set" : "yeyz_repl0",
  4. "date" : ISODate("2020-11-20T15:35:12.386Z"),
  5. "myState" : 1,
  6. "term" : NumberLong(46),
  7. "syncingTo" : "",
  8. "syncSourceHost" : "",
  9. "syncSourceId" : -1,
  10. "heartbeatIntervalMillis" : NumberLong(2000),
  11. "optimes" : {
  12.   "lastCommittedOpTime" : {
  13.    "ts" : Timestamp(1605886492, 1),
  14.    "t" : NumberLong(46)
  15.   },
  16.   "readConcernMajorityOpTime" : {
  17.    "ts" : Timestamp(1605886492, 1),
  18.    "t" : NumberLong(46)
  19.   },
  20.   "appliedOpTime" : {
  21.    "ts" : Timestamp(1605886502, 1),
  22.    "t" : NumberLong(46)
  23.   },
  24.   "durableOpTime" : {
  25.    "ts" : Timestamp(1605886502, 1),
  26.    "t" : NumberLong(46)
  27.   }
  28. },
  29. "lastStableCheckpointTimestamp" : Timestamp(1605886462, 1),
  30. "members" : [],
  31. "ok" : 1,
  32. "operationTime" : Timestamp(1605886502, 1),
  33. "$clusterTime" : {
  34.   "clusterTime" : Timestamp(1605886502, 1),
  35.   "signature" : {
  36.    "hash" : BinData(0,"C8IXyxh/1zCqWtwxI1mfMgq9DAE="),
  37.    "keyId" : NumberLong("6891183663887679489")
  38.   }
  39. }
复制代码
下面对常用的字段举行形貌:
set:副本集的名称
date:当前的时间
myState:当前副本集节点的状态
term:副本集的选举数
syncingTo:从哪个副本集同步数据,如果这里是空值,则代表当前副本是primary
syncSourceHost、syncSourceId分别代表同步目标节点的host和id值
heartbeatIntervalMills:副本集心跳频率,单位为ms
optimes:副本集同步的进度信息
lastStableCheckPointTimestamp:列出最近的查抄点的时间。
members:列出副本集中每个成员的信息数据。
以上就是MongoDB 监控工具mongostat和mongotop的使用的具体内容,更多关于MongoDB 监控工具的资料请关注草根技能分享其它相干文章!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作