注意:从 MongoDB 4.4 之后,这些工具并没有随安装包一起发布,需要的用户自行下载,下载地址:https://www.mongodb.com/try/download/database-tools
mongostat 实用程序可快速查看当前运行的 mongod 或 mongos 实例的状态。
mongostat 在功能上类似于 UNIX/Linux 文件系统实用程序 vmstat,但它提供有关 mongod 和 mongos 实例的数据。
注意,从系统命令行运行 mongostat 命令,而不是从 mongo shell 运行 mongostat 命令。
用法:
mongostat <options> <connection-string> <polling interval in seconds>
监控 MongoDB 服务器的基本统计数据。
连接字符串必须以 mongodb:// 或 mongodb+srv:// 开头。
更多信息请参见 http://docs.mongodb.com/database-tools/mongostat
--help 打印帮助信息
--version, -v 打印工具的版本信息且退出
--config=<filename> 新选项,100.3.0 版本。指定 YAML 配置文件的完整路径,该文件包含以下选项的敏感值:
--password
--uri
--sslPEMKeyPassword
推荐使用这种方式为 mongotop 指定密码,配置文件的格式如下:
password: <password> uri: mongodb://mongodb0.example.com:27017 sslPEMKeyPassword: <password>
注意,向 password: 字段指定密码并在 uri: 字段中提供包含冲突密码的连接字符串将导致错误。
请务必使用适当的文件系统权限保护此文件。
-v, --verbose:<level> 更详细的日志输出(包含多个次数以获得更多详细信息,如 -vvvvv,或指定一个数值,如 --verbose=N)
--quiet 以安静模式运行 mongotop,尝试限制输出量。该选项抑制:
数据库命令的输出
复制活动
连接接受事件
连接关闭事件
-h=<host><:port>, --host=<hostname><:port> 默认值:localhost:27017。指定 MongoDB 部署的可解析主机名。默认情况下,mongotop 会尝试连接到运行在 localhost 上、端口号为 27017 的 MongoDB 实例。要连接到副本集,请指定 replSetName 和副本集成员的种子列表,如下所示:
--host=<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>
当指定副本集列表格式时,mongotop 总是连接到主服务器。
你也可以只指定副本集中任何一个成员的主机和端口,从而连接到该成员:
--host=<hostname1><:port>
如果使用 IPv6 并使用 <address>:<port> 格式,则必须用括号(例如 [<address>])括起地址和端口组合的部分。或者,也可以直接在 URI 连接字符串中直接指定主机名。在提供连接字符串的同时使用 --host 的同时提供连接字符串,并指定相互冲突的信息将导致错误。如果连接到一个副本集,而该副本集的主无法连接的副本集,mongotop 会返回错误信息。
--port=<port> 默认值:27017。指定 MongoDB 实例侦听客户端连接的 TCP 端口。或者,也可以直接在 URI 连接字符串中直接指定端口。在提供连接字符串的同时使用 --port 的同时提供连接字符串并指定相互冲突的信息将导致错误。
--ssl 连接到已启用 ssl 的一个或多个 mongod 或 mongos
--sslCAFile=<filename> 包含证书颁发机构颁发的根证书链的 .pem 文件
--sslPEMKeyFile=<filename> 包含证书和密钥的 .pem 文件
--sslPEMKeyPassword=<password> 用于解密 sslPEMKeyFile 的密码(如有必要)
--sslCRLFile=<filename> 包含证书吊销列表的 .pem 文件
--sslFIPSMode 使用已安装的 openssl 库的 FIPS 模式
--sslAllowInvalidCertificates 绕过服务器证书的验证检查,允许使用无效证书。使用 allowInvalidCertificates 设置时,MongoDB 会将使用无效证书记录为警告。
--sslAllowInvalidHostnames 禁用 TLS/SSL 证书中的主机名验证。允许 mongotop 连接到 MongoDB 实例,即使其证书中的主机名与指定的主机名不匹配。
--tlsInsecure 绕过对服务器证书链和主机名的验证
--u=<username>, --username=<username> 认证用户名
--p=<password>, --password=<password> 认证密码
--authenticationDatabase=<database-name> 保存用户证书的数据库
--authenticationMechanism=<mechanism> 使用的身份验证机制
--awsSessionToken=<aws-session-token> 会话令牌,以通过 AWS IAM 进行身份验证
--gssapiServiceName=<service-name> 使用 GSSAPI/Kerberos 验证时要使用的服务名称(默认值:mongodb)
--gssapiHostName=<host-name> 使用 GSSAPI/Kerberos 验证时要使用的主机名(默认:<远程服务器地址>)
--o=<field>[,<field>]* 要显示的字段。对于自定义字段,使用点号语法在 serverStatus 输出中建立索引,并使用可选的 .diff() 和 .rate() 方法,例如: metrics.record.moves.diff()。-o 支持以下方法来修改指定 serverStatus 字段返回的信息:
.rate() 使用 .rate() 查看 serverStatus 字段每秒从 mongostat 调用时 serverStatus 字段的每秒变化率。
.diff() 使用 .diff() 查看 serverStatus 字段自上一次 mongostat 调用后服务器状态字段的变化程度。调用间隔由 <sleeptime> 指定。
--O=<field>[,<field>]* 类似于 -o,但预置了默认字段。在默认输出后插入指定字段
--humanReadable: 以人类可读格式打印大小和时间(如 1K 234M 2G)。要使用更精确的机器可读格式,请使用 --humanReadable=false (默认值:true)
--noheaders 不输出列名
--n=<count>, --rowcount=<count> 要打印的统计行数(0 表示不确定)
--discover 发现节点并显示所有节点的统计数据
--all 所有可选字段
--json 以 JSON 而不是格式化表格的形式输出
--interactive 在非滚动界面中显示统计数据
mongostat 返回的值反映的是 1 秒钟内的运行情况。当 mongostat <sleeptime> 的值大于 1 时、 mongostat 会对统计数据求平均值,以反映每秒的平均操作次数。例如:
C:UsersAdministrator> mongostat insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time *0 *0 *0 *0 0 0|0 0.0% 0.0% 0 5.47G 227M 0|0 0|0 110b 56.9k 3 Sep 11 13:25:49.905 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 5.47G 227M 0|0 0|0 113b 58.4k 3 Sep 11 13:25:50.893 *0 *0 *0 *0 0 0|0 0.0% 0.0% 0 5.47G 227M 0|0 0|0 111b 57.6k 3 Sep 11 13:25:51.894 *0 *0 *0 *0 0 0|0 0.0% 0.0% 0 5.47G 227M 0|0 0|0 111b 57.5k 3 Sep 11 13:25:52.896 ...
ngostat 会输出以下字段:
inserts 每秒插入数据库的对象数。如果后面有星号(如 *),则表示该数据指的是复制操作。
query 每秒的查询操作数。
update 每秒的更新操作数。
delete 每秒的删除操作数。
getmore 每秒获取更多(即光标批处理)操作的次数。
command 每秒的命令数。在辅助系统上,mongostat 以 local|replicated 命令的形式显示由管道字符(例如|)分隔的两个值。
flushes 对于 WiredTiger 存储引擎,刷新指的是每次轮询间隔之间触发的 WiredTiger 检查点数量。
dirty 仅适用于 WiredTiger 存储引擎。WiredTiger 缓存中的脏字节百分比,计算公式为 wiredTiger.cache.tracked 缓存中的脏字节 / wiredTiger.cache.maximum 配置的字节数。
used 仅适用于 WiredTiger 存储引擎。使用中的 WiredTiger 缓存百分比,计算公式为缓存中的 wiredTiger.cache.bytes 当前值 / 配置的 wiredTiger.cache.maximum bytes 最大值。
vsize 最后一次调用 mongostat 时进程使用的虚拟内存量(以兆字节为单位)
res 上次调用 mongostat 时进程使用的常驻内存量(兆字节)
locked 全局写锁定的时间百分比。仅当 mongostat 针对 3.0 之前版本的 MongoDB 实例运行时才会出现
qr 等待从 MongoDB 实例读取数据的客户端队列的长度
qw 等待从 MongoDB 实例写入数据的客户端队列的长度
ar 执行读取操作的活动客户端数量
aw 执行写操作的活动客户端数量
netIn MongoDB 实例接收到的网络流量(以字节为单位)
netOut MongoDB 实例发送的网络流量(以字节为单位)
conn 打开的连接总数
set 副本集的名称(如果适用)
repl 成员的复制状态
以下是一些常见的 mongostat 命令示例,展示了不同的用法:
(1)显示默认的 MongoDB 实例的统计信息:
mongostat
(2)显示指定 MongoDB 实例的统计信息:
mongostat --host <hostname> --port <port>
(3)指定特定的刷新间隔(单位为秒):
mongostat --host <hostname> --port <port> --rowcount <refresh_interval>
(4)显示 MongoDB 实例的统计信息,并以 JSON 格式输出:
mongostat --host <hostname> --port <port> --json
(5)显示 MongoDB 实例的统计信息,并只显示指定的字段:
mongostat --host <hostname> --port <port> --fields <field1,field2,field3>
(6)显示 MongoDB 实例的统计信息,并指定用户名和密码:
mongostat --host <hostname> --port <port> --username <username> --password <password>