工具 mongostat

注意:从 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  连接到已启用 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 进行身份验证

kerberos 选项

  • --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>
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号