MongoDB 监控工具mongostat和mongotop的使用

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

mongostat

mongostat工具提供了mongod和mongos的运行状态和数据,可以从mongostat工具的执行结果中获取如下信息:

[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

这里有必要将其中的某些关键列说明一下:

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输出的内容有限,来看下面的例子:

[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输出的内容表示每个集合的每个表读写情况,它打印了每个库里面读写花费的时长,单位是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的意思。

> 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:代表当前数据库的名称

collections:当前数据库中集合的数量

view:当前数据库中视图的数量

objects:当前数据库中所有文档的数量

avgObjSize:数据库中文档的平均大小

dataSize:当前数据库的数据大小,单位是byte

storageSize:当前数据库占用硬盘空间的大小,单位是byte

numExtents:当前数据库中所有集合Extents扩展的数量统计

indexes:当前数据库中的索引数量

indexSize:当前数据库中的索引代销,单位是byte

fsUsedSize:当前MongoDb所在的硬盘已经使用的空间大小

fsTotalSize:当前MongoDb所在的硬盘总共的空间大小

ok:1表示成功,0表示失败

db.coll.stats()

这个函数返回的是集合的状态信息,由于输出的内容很多,这里我们仅说明重要的几个部分:

> db.yeyz.stats()
{
 "ns" : "test.yeyz",
 "size" : 115,
 "count" : 3,
 "avgObjSize" : 38,
 "storageSize" : 36864,
 "capped" : false,
 "wiredTiger" : {
  "metadata" : {
   "formatVersion" : 1
  },

ns:当前集合的名称

size:当前集合的大小,单位是byte

count:当前集合的文档数量

nindexes:当前集合中索引的数量

totalIndexSize:当前集合中所有索引的大小,单位是byte

rs.status()

这个函数是用来查看副本集中的成员的状态信息,如下:

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:当前副本集节点的状态

term:副本集的选举数

syncingTo:从哪个副本集同步数据,如果这里是空值,则代表当前副本是primary

syncSourceHost、syncSourceId分别代表同步目标节点的host和id值

heartbeatIntervalMills:副本集心跳频率,单位为ms

optimes:副本集同步的进度信息

lastStableCheckPointTimestamp:列出最近的检查点的时间。

members:列出副本集中每个成员的信息数据。

以上就是MongoDB 监控工具mongostat和mongotop的使用的详细内容,更多关于MongoDB 监控工具的资料请关注我们其它相关文章!

(0)

相关推荐

  • MongoDB性能优化及监控

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引是凌驾于数据存储系统之上的另一层系统,所以各种结构迥异的存

  • 利用MongoDB中oplog机制实现准实时数据的操作监控

    前言 最近有一个需求是要实时获取到新插入到MongoDB的数据,而插入程序本身已经有一套处理逻辑,所以不方便直接在插入程序里写相关程序,传统的数据库大多自带这种触发器机制,但是Mongo没有相关的函数可以用(也可能我了解的太少了,求纠正),当然还有一点是需要python实现,于是收集整理了一个相应的实现方法. 一.引子 首先可以想到,这种需求其实很像数据库的主从备份机制,从数据库之所以能够同步主库是因为存在某些指标来做控制,我们知道MongoDB虽然没有现成触发器,但是它能够实现主从备份,所以我

  • mongodb监控工具mongostat的使用及命令详解

    mongostat是mongodb自带的状态检测工具,在命令行下使用,会间隔固定时间获取mongodb的当前运行状态,并输出. 1.mongostat常用命令格式: mongostat --host 192.168.11.11:27017 --username root --password 12345678 --authenticationDatabase admin mongostat参数说明: --host :指定IP地址和端口,也可以只写IP,然后使用--port参数指定端口号 --us

  • Zabbix3.4监控mongodb数据库状态的方法

    mongodb有db.serverStatus()命令,可以查看mongodb的运行状态,那么zabbix就可以调用这个命令实现mongodb的监控. 一.db.serverStatus()命令的使用 注:只有超级管理员账号才有权限使用此命令 1.查看mongodb服务状态 echo "db.serverStatus()" | mongo --port 37485 -u username -p 'password' --authenticationDatabase 'admin' 2.

  • python监控linux内存并写入mongodb(推荐)

    (需要安装psutil 用来获取服务器资源,以及pymongo驱动)#pip install psutil #pip install pymongo #vim memory_monitory.py 文件内容如下 #!/usr/bin/env python # -*- coding: UTF-8 -*- import psutil import socket import time from pymongo import MongoClient mongodbIp = '192.168.200.1

  • MongoDB运行状态监控、性能分析工具mongostat详解

    这篇文章的目的是让你知道怎么了解你正在运行的Mongdb是否健康. mongostat详解 mongostat是mongdb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态,并输出.如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态. 它的输出有以下几列: 1.inserts/s 每秒插入次数 2.query/s 每秒查询次数 3.update/s 每秒更新次数 4.delete/s 每秒删除次数 5.

  • 使用zabbix监控mongodb的方法

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. Mongodb如今越来越火,要做好对mongodb的监控就需要从它的安装配置,到简单的command语句使用,再到对它运行机制以及状态获取方法的掌握. mongodb有三种基本的状态获取方式: 1.mongostat 2.开启28017的监听端口,curl

  • MongoDB 监控工具mongostat和mongotop的使用

    MongoDB中自带两个监控的工具,分别是mongostat和mongotop,今天我们看看这两个工具的使用方法. mongostat mongostat工具提供了mongod和mongos的运行状态和数据,可以从mongostat工具的执行结果中获取如下信息: [root@VM-0-14-centos ~]# mongostat --port=27018 -u "yeyz" --authenticationDatabase "admin" -p "123

  • 在linux中安装mongodb的方式小结

    对于mongodb的安装,官方提供了多种安装方式,推荐使用deb或者rpm方式安装. 下面我们介绍在Ubuntu16.04环境下的安装,安装方式使用apt包管理工具进行安装. 1. Ubuntu16.04安装mongodb 1.1 概述 Ubuntu有其自己的MongoDB包,MongoDB官方提供的包与其相比更新.我们安装是MongoDB提供的.deb包 Note MongoDB只提供了64位LTS(Long Term Surpport) Ubuntu版本的支持. 1.2 包 MongoDB官

  • CentOS 6.5系统中使用yum安装MongoDB 2.6 教程

    下面我们在CentOS 6.5 x64系统上安装最新的MongoDB 2.6.0版. MongoDB v2.4.x版的软件仓库有两个包: 1)mongo-10gen-server 此包里面有最新版的mongod和mongos守护程序以及相关的配置和初始化脚本. 2)mongo-10gen 此包里面有最新版的所有MongoDB工具.这些工具方便你管理MongoDB系统. 但在MongoDB v2.6.0版的软件仓库一共有五个包: 1)mongodb-org 此包是元数据包,它可以实现自动安装下面的

  • Centos7 yum安装mongodb实现步骤详解

    简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 查看官方网站 MongoDB特点 模式自由 :可以把不同结构的文档存储在同一个数据库里 面向集合的存储:适合存储 JSON风格文件的形式 完整的索引支持:对任何属性可索引 复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制.复制的主要目的是提供冗余及自动故障转移 自动分片:支持云级别的伸缩性:自动分片功能支持水

  • MongoDB教程之基本管理命令

    1.  启动和停止MongoDB: 执行mongod命令启动MongoDB服务器.mongod有很多可配置的选项,我们通过mongod --help可以查看所有选项,这里仅介绍一些主要选项:   复制代码 代码如下: --dbpath:     缺省情况下数据库的数据目录为/data/db.对于Windows平台,如果当前的可执行文件位于D盘,那么其缺省数据目录为D:\data\db.我们可以通过这个选项为服务程序重新指定数据目录.如果当前主机运行多个mongod,那么必须为每个服务程序指定不同

  • 详解mongoDB主从复制搭建详细过程

    详解mongoDB主从复制搭建详细过程 实验目的搭建mongoDB主从复制 主 192.168.0.4 从 192.168.0.7 mongodb的安装 1: 下载mongodb www.mongodb.org 下载最新的stable版 查看自己服务器 适合哪个种方式下载(wget 不可以的 可以用下面方式下载) wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.0.5.tgz curl -O -L https

  • MongoDB的安装及配置文件选项全解

    安装部分 1. 安装包 1.1 mongodb-org 可以自动安装以下的四个包 1.2 mongodb-org-server mongod进程和配置文件,启动脚本 1.3 mongodb-org-mongos mongos进程 1.4 mongodb-org-shell mongo shell 1.5 mongodb-org-tools 其他mongodb工具,mongoimport,mongoexport,mongodump,mongrestore,mongofiles,bsondump,m

  • Ubuntu下安装mongodb 3.4的详细过程

    概述 这个教程讲述了在长期支持版 Ubuntu Linux 系统上从 .deb 包安装 Mongodb 社区版的步骤.虽然 Ubuntu 软件仓库中已经包含了 MongoDB 的包,但并不是最新的版本. 平台支持: MongoDB 提供的包只支持 64 位长期支持版本的 Ubuntu 发行版.比如 Ubuntu 12.04 LTS (precise), 14.04 LTS (trusty), 16.04 LTS (xenial) 等等.这些包可能在其他发行版上也能工作,但是并未被支持. 注意事项

随机推荐