文档菜单
文档首页
/
MongoDB数据库工具

mongostat

本页内容

  • 摘要
  • 语法
  • 选项
  • 字段
  • 更多信息
  • 了解更多

本文档适用于mongostat的版本100.10.0

mongostat 是一个命令行工具,可快速概述当前运行中的mongodmongos 实例的状态。使用 mongostat 帮助识别系统瓶颈。

mongostat 在功能上类似于 UNIX/Linux 文件系统工具 vmstat,但提供了关于 mongodmongos 实例的数据。

在系统命令行中运行 mongostat,而不是 mongo 脚本。

mongostat 语法

mongostat <options> <connection-string> <polling interval in seconds>
--help

返回关于 mongostat 选项和使用的信息。

--verbose, -v

增加在标准输出或日志文件中返回的内部报告量。通过多次包含选项来增加详细程度(例如,-vvvvv)。

--version

返回 mongostat 的版本号。

--config=<filename>

新增100.3.0.

版本

--sslPEMKeyPassword

这是指定mongostat密码的推荐方式,除了通过密码提示指定外。

password: <password>
uri: mongodb://mongodb0.example.com:27017
sslPEMKeyPassword: <password>

配置文件具有以下形式

password:字段中指定密码,并在uri:字段中提供一个包含冲突密码的连接字符串将导致错误。

注意

如果您使用--config指定了配置文件,并使用--password--uri--sslPEMKeyPassword选项将密码传递给mongostat,则每个命令行选项将覆盖配置文件中相应选项。

--uri=<connectionString>

指定MongoDB部署的解析URI连接字符串,用引号括起来

--uri="mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"

mongostat的版本100.0开始,连接字符串可以作为位置参数提供,无需使用--uri选项

mongostat mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

作为位置参数,连接字符串可以指定在命令行的任何位置,只要它以mongodb://mongodb+srv://开头。例如

mongostat --username joe --password secret1 mongodb://mongodb0.example.com:27017 --ssl

只能提供一条连接字符串。如果尝试使用 --uri 选项或位置参数包含多条,将会导致错误。

有关连接字符串组件的信息,请参阅 连接字符串 URI 格式 文档。

注意

连接字符串中的一些组件可以使用它们自己的明确命令行选项来指定,例如 --username--password。在提供连接字符串的同时使用明确选项并指定冲突信息将会导致错误。

注意

如果在 Ubuntu 18.04 上使用 mongostat,当使用带 --uri 选项的 SRV 连接字符串(形式为 mongodb+srv://)时,可能会遇到 cannot unmarshal DNS 错误信息。如果是这样,请改用以下选项之一

警告

在某些系统上,使用 --uri 选项提供的密码可能会被系统状态程序(如 ps)看到,这些程序可能由其他用户调用。请考虑以下替代方案

  • 在连接字符串中省略密码以接收交互式密码提示,或

  • 使用 --config 选项来指定包含密码的配置文件。

--host=<hostname><:port>, -h=<hostname><:port>

默认值: localhost:27017

指定 MongoDB 部署的解析主机名。默认情况下,mongostat 尝试连接到运行在本地主机上的 MongoDB 实例,端口为 27017

要连接到副本集,您可以指定要报告的集合成员或成员,如下所示(另请参阅 --discover 标志)

--host=<hostname1><:port>,<hostname2><:port>,<...>

如果您使用 IPv6 并使用 <address>:<port> 格式,必须将地址和端口号组合的部分放在括号内(例如,[<address>])。

或者,您还可以在 URI 连接字符串 中直接指定主机名。在提供连接字符串的同时使用 --host 并指定冲突信息将导致错误。

--port=<port>

默认值: 27017

指定 MongoDB 实例监听客户端连接的 TCP 端口。

或者,您还可以在 URI 连接字符串 中直接指定端口。在提供连接字符串的同时使用 --port 并指定冲突信息将导致错误。

--ssl

启用连接到已启用 TLS/SSL 支持的 mongodmongos

或者,您也可以直接在 URI 连接字符串 中配置 TLS/SSL 支持。在同时使用 --ssl 并指定冲突信息的情况下,将会出现错误。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅 配置 mongod 和 mongos 的 TLS/SSL客户端的 TLS/SSL 配置。

--sslCAFile=<filename>

指定包含证书颁发机构根证书链的 .pem 文件。使用相对路径或绝对路径指定 .pem 文件的文件名。

或者,您也可以直接在 URI 连接字符串 中指定 .pem 文件。在同时使用 --sslCAFile 并指定冲突信息的情况下,将会出现错误。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅 配置 mongod 和 mongos 的 TLS/SSL客户端的 TLS/SSL 配置。

--sslPEMKeyFile=<filename>

指定包含 TLS/SSL 证书和私钥的 .pem 文件。使用相对路径或绝对路径指定 .pem 文件的文件名。

当使用 --ssl 选项连接到具有 mongodmongos 并启用 CAFile 且未启用 allowConnectionsWithoutCertificates.

或者,您也可以直接在 URI 连接字符串 中指定 .pem 文件。在同时使用 --sslPEMKeyFile 并指定冲突信息时,将导致错误。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅 配置 mongod 和 mongos 的 TLS/SSL客户端的 TLS/SSL 配置。

--sslPEMKeyPassword=<value>

指定用于解密证书密钥文件(即 --sslPEMKeyFile)的密码。只有在证书密钥文件被加密时,才使用 --sslPEMKeyPassword 选项。在任何情况下,mongostat 都将从所有日志和报告输出中删除密码。

如果 PEM 文件中的私钥被加密,并且您没有指定 --sslPEMKeyPassword 选项,则 mongostat 将提示输入密钥短语。请参阅 TLS/SSL 证书密钥短语。

或者,您也可以直接在 URI 连接字符串 中指定密码。在同时使用 --sslPEMKeyPassword 并指定冲突信息时,将导致错误。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅 配置 mongod 和 mongos 的 TLS/SSL客户端的 TLS/SSL 配置。

警告

在某些系统上,使用 --sslPEMKeyPassword 选项直接提供的密码可能会被系统状态程序(如 ps)看到,这些程序可能由其他用户调用。请考虑使用 --config 选项指定包含密码的配置文件。

--sslCRLFile=<filename>

指定包含证书吊销列表的 .pem 文件。使用相对路径或绝对路径指定 .pem 文件的文件名。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅 配置 mongod 和 mongos 的 TLS/SSL客户端的 TLS/SSL 配置。

--sslAllowInvalidCertificates

跳过对服务器证书的验证检查,允许使用无效证书。当使用 allowInvalidCertificates 设置时,MongoDB 会记录使用无效证书的警告。

警告

尽管可用,但尽可能避免使用 --sslAllowInvalidCertificates 选项。如果必须使用 --sslAllowInvalidCertificates,仅在有入侵可能性的系统上使用此选项。

在不验证服务器证书的情况下连接到 mongodmongos 实例是一个潜在的安全风险。如果您只需要禁用 TLS/SSL 证书中的主机名的验证,请参阅 --sslAllowInvalidHostnames

或者,您还可以直接在 URI 连接字符串 中禁用证书验证。同时提供连接字符串并使用 --sslAllowInvalidCertificates 并指定冲突信息将导致错误。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅 配置 mongod 和 mongos 的 TLS/SSL客户端的 TLS/SSL 配置。

--sslAllowInvalidHostnames

禁用TLS/SSL证书中主机名的验证。允许 mongostat 连接到MongoDB实例,即使它们的证书中的主机名与指定的主机名不匹配。

或者,您也可以直接在URI连接字符串中禁用主机名验证。在同时使用--uri--sslAllowInvalidHostnames并指定冲突信息时将导致错误。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅 配置 mongod 和 mongos 的 TLS/SSL客户端的 TLS/SSL 配置。

--username=<username>, -u=<username>

指定用于验证连接到使用身份验证的MongoDB数据库的用户名。与--password--authenticationDatabase选项一起使用。

或者,您也可以直接在URI连接字符串中指定用户名。在同时使用--uri--username并指定冲突信息时将导致错误。

如果使用MONGODB-AWS身份验证机制连接到MongoDB Atlas集群,您可以在以下字段中指定您的AWS访问密钥ID:

请参阅使用AWS IAM凭据连接到MongoDB Atlas集群的示例

--password=<password>, -p=<password>

指定一个密码,用于认证到使用认证的MongoDB数据库。与--username--authenticationDatabase选项一起使用。

要提示用户输入密码,请使用不带--password--username选项,或将--password的值指定为空字符串,如--password=""

或者,您也可以直接在URI连接字符串中指定密码。提供连接字符串的同时使用--password并指定冲突的信息将导致错误。

如果使用MONGODB-AWS认证机制连接到MongoDB Atlas集群,您可以在

  • 此字段

  • 连接字符串,或

  • AWS_SECRET_ACCESS_KEY环境变量中指定您的AWS密钥访问密钥。

有关每个示例,请参阅使用AWS IAM凭据连接到MongoDB Atlas集群

警告

在某些系统中,使用--password选项直接提供的密码可能会被系统状态程序(如ps)看到,这些程序可能由其他用户调用。请考虑

  • 省略--password选项,以接收交互式密码提示,或者

  • 使用 --config 选项来指定包含密码的配置文件。

--awsSessionToken=<AWS Session Token>

如果使用 MongoDB Atlas 集群并使用 MONGODB-AWS 认证机制,并且除了您的 AWS 访问密钥 ID 和秘密访问密钥外还使用会话密钥,您可以在

有关每个示例,请参阅使用AWS IAM凭据连接到MongoDB Atlas集群

仅在使用 MONGODB-AWS 认证机制 时有效。

--authenticationDatabase=<dbname>

指定已创建指定 --username 的认证数据库。见 认证数据库。

--authenticationDatabase 对于使用 mongodmongos 实例的 自管理部署认证。

如果使用郭萨皮(GSSAPI)(Kerberos)、明文(PLAIN)(LDAP SASL)或MONGODB-AWS认证机制,您必须将--authenticationDatabase设置为$external

或者,您还可以直接在URI连接字符串中指定认证数据库。当同时使用--authenticationDatabase并指定冲突信息时,将会产生错误。

--authenticationMechanism=<name>

默认值:SCRAM-SHA-1

指定mongostat实例用于认证mongodmongos的认证机制。

更改100.1.0: 从版本100.1.0开始,mongostat在连接到MongoDB Atlas集群时,增加了对MONGODB-AWS认证机制的支持。

描述

RFC 7677 标准的基于SHA-256散列函数的盐值挑战响应认证机制。

需要将featureCompatibilityVersion设置为4.0

MongoDB TLS/SSL证书认证。
MONGODB-AWS

使用AWS IAM凭证进行外部认证,用于连接到MongoDB Atlas集群。请参阅使用AWS IAM凭证连接MongoDB Atlas集群

新增100.1.0.

GSSAPI (Kerberos)
使用Kerberos进行外部认证。此机制仅在MongoDB Enterprise.中可用。
PLAIN (LDAP SASL)
使用LDAP进行外部认证。您还可以使用PLAIN对数据库中的用户进行认证。PLAIN以明文形式传输密码。此机制仅在MongoDB Enterprise.中可用。

或者,您也可以直接在URI连接字符串中指定认证机制。在同时使用--authenticationMechanism并指定冲突信息时,将会导致错误。

--gssapiServiceName=<string>

使用GSSAPI/Kerberos指定服务名称。只有在服务不使用默认名称mongodb时才需要。

此选项仅在MongoDB企业版中可用。

--gssapiHostName=<string>

使用GSSAPI/Kerberos指定服务的主机名。只有在机器的主机名与DNS解析的主机名不匹配时才需要。

此选项仅在MongoDB企业版中可用。

--humanReadable=<布尔值>

默认值: true

当设置为 true 时,mongostat 将日期和数量值格式化为易于阅读,如下面的示例输出所示

insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time
991 *0 *0 *0 0 2|0 3.4% 4.5% 0 2.90G 297M 0|0 0|0 12.9m 84.2k 2 Oct 6 09:45:37.478
989 *0 *0 *0 0 2|0 3.6% 4.7% 0 2.91G 310M 0|0 0|0 12.9m 84.1k 2 Oct 6 09:45:38.476
988 *0 *0 *0 0 1|0 3.7% 4.8% 0 2.92G 323M 0|0 0|0 12.8m 83.8k 2 Oct 6 09:45:39.481
976 *0 *0 *0 0 2|0 3.9% 5.0% 0 2.94G 335M 0|0 0|0 12.7m 83.7k 2 Oct 6 09:45:40.476

当设置为 false 时,mongostat 返回原始数据,如下面的示例输出所示

insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time
992 *0 *0 *0 0 2|0 1.3 2.4 0 2941255680 149946368 0|0 0|0 12913607 84271 2 2016-10-06T09:45:25-04:00
989 *0 *0 *0 0 1|0 1.5 2.6 0 2974810112 163577856 0|0 0|0 12873225 84087 2 2016-10-06T09:45:26-04:00
996 *0 *0 *0 0 1|0 1.6 2.8 0 2972712960 177209344 0|0 0|0 12955423 84345 2 2016-10-06T09:45:27-04:00
987 *0 *0 *0 0 1|0 1.8 2.9 0 2989490176 190840832 0|0 0|0 12861852 84008 2 2016-10-06T09:45:28-04:00
-o=<字段列表>

当使用 -o 指定输出字段时,只有指定的字段将包含在 mongostat 输出中。

使用点符号指定 serverStatus 字段,例如 metrics.document.inserted

自定义字段名可以包含空格。如果您包含空格,不要在字段名周围放置额外的引号。要指定字段的自定义名称,请使用 <字段>=<自定义名称>,例如

mongostat -o='host=H,time=T,version=MongoDB Version'

-o 支持以下方法修改给定 serverStatus 字段返回的信息

.rate()

使用 .rate() 来查看从一次 mongostat 调用到下一次调用的服务器状态字段变化率。

使用 .rate() 查看字段变化率.rate() 展示了如何使用 mongostat-o.rate() 方法。

.diff()

使用 .diff() 来查看自上次 mongostat 调用以来服务器状态字段的变化量。调用间隔由 <sleeptime> 指定。

使用 .diff() 查看字段变化.diff() 展示了如何使用 mongostat-o.diff() 方法。

mongostat 支持指定 任选其一 -o-O:不能同时包含这两个选项。

请参阅指定 mongostat 输出字段,以了解 -o 的示例。

-O=<field list>

当指定时,mongostat 在默认 mongostat 输出之后包含指定的 serverStatus 字段。

使用点符号指定 serverStatus 字段,例如 metrics.document.inserted

自定义字段名可以包含空格。如果您包含空格,不要在字段名周围放置额外的引号。要指定字段的自定义名称,请使用 <字段>=<自定义名称>,例如

mongostat -O=host=H,time=T

mongostat 支持指定 任选其一 -O-o:您不能同时包含这两个选项。

请参阅mongostat 输出添加字段,以了解 -O 的示例。

--noheaders

禁用列或字段名称的输出。

--rowcount=<number>, -n=<number>

控制输出的行数。与sleeptime参数一起使用来控制mongostat操作的持续时间。

如果没有指定--rowcount,则mongostat将返回无限多的行(例如,值为0)。

--discover

发现并报告副本集分片集群的所有成员的统计信息。当连接到副本集的任何成员时,--discover将报告副本集中所有非隐藏成员。当连接到mongos时,mongostat将返回集群中所有分片的数据。如果副本集在分片集群中提供了一个分片,则mongostat将报告该副本集的非隐藏成员。

在这种情况下,mongostat --host选项不是必需的,但可能很有用。

在运行--discover时,mongostat将遵守--rowcount

--all

配置 mongostat 以返回所有可选的 字段。

--json

以 JSON 格式返回 mongostat 的输出。

--interactive

在交互式非滚动界面中显示 mongostat 的输出,而不是默认的滚动输出。

--interactive 选项与 --json 选项不可用。

参见:在交互式界面中查看统计数据查看示例,了解--interactive的用法。

<sleeptime>

默认值: 1

最后的mongostat参数是mongostat在两次调用之间等待的时间(以秒为单位)。默认情况下,mongostat每秒返回一个调用。

mongostat返回的值反映了1秒内的操作。对于大于1的<sleeptime>值,mongostat会将数据平均以反映每秒的平均操作。

mongostat返回反映1秒内操作的值。当<sleeptime>的值大于1时,mongostat将统计数据平均以反映每秒的平均操作。

mongostat输出以下字段

插入

每秒插入到数据库中的对象数量。如果后面跟有星号(例如,*),则数据表示复制操作。

查询

每秒的查询操作数量。

更新

每秒的更新操作数量。

删除

每秒的删除操作数量。

获取更多

每秒的获取更多(即游标批量)操作数量。

命令

每秒命令数量。在辅助系统上,mongostat 以竖线字符(例如 |)分隔的形式呈现两个值,形式为 local|replicated 命令。

刷新

对于WiredTiger 存储引擎刷新 指的是在每个轮询间隔之间触发的 WiredTiger 检查点的数量。

仅适用于WiredTiger 存储引擎。WiredTiger 缓存中脏字节的百分比,通过 wiredTiger.cache.tracked dirty bytes in the cache / wiredTiger.cache.maximum bytes configured 计算。

使用中

仅适用于WiredTiger 存储引擎。WiredTiger 缓存中使用中的百分比,通过 wiredTiger.cache.bytes currently in the cache / wiredTiger.cache.maximum bytes configured 计算。

虚拟大小

在最后一次 mongostat 调用时的进程使用的虚拟内存量(以兆字节为单位)。

常驻内存

在最后一次 mongostat 调用时的进程使用的常驻内存量(以兆字节为单位)。

锁定

全局写锁的百分比时间。仅在针对 MongoDB 实例的 mongostat 运行在 3.0 版本之前的版本时出现。

qr

等待从 MongoDB 实例读取数据的客户端队列长度。

qw

等待向 MongoDB 实例写入数据的客户端队列长度。

ar

执行读取操作的活跃客户端数量。

aw

执行写入操作的活跃客户端数量。

netIn

MongoDB 实例接收到的网络流量量(以字节为单位)。

这包括来自 mongostat 自身的流量。

netOut

MongoDB 实例发送的网络流量量(以字节为单位)。

这包括来自 mongostat 自身的流量。

conn

打开连接的总数。

如果适用,则为副本集的名称。

复制

成员的复制状态。

复制类型
PRI
SEC
REC
恢复中
UNK
未知
RTR
mongos 进程(“路由器”)
ARB

有关监视MongoDB的更多信息,请参阅监视MongoDB。

有关其他MongoDB状态输出的更多信息,请参阅

有关提供MongoDB度量值的附加实用工具,请参阅mongotop

返回

示例