工具 mongotop

注意:从 MongoDB 4.4 之后,这些工具并没有随安装包一起发布,需要的用户自行下载,下载地址:https://www.mongodb.com/try/download/database-tools

mongotop 提供了一种方法来跟踪 MongoDB 实例 mongod 读写数据所花费的时间。

mongotop 提供了每个数据集级别的统计数据。默认情况下 mongotop 每秒返回一次值。

工具语法

用法:

mongotop <options> <connection-string> <polling interval in seconds>

监视每个集合的基本用法统计信息。

连接字符串必须以 mongodb:// 或 mongodb+srv:// 开头。

更多信息请参阅 http://docs.mongodb.com/database-tools/mongotop

常规选项

  • --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 验证时要使用的主机名(默认:<远程服务器地址>)

输出选项

  • --locks  关于使用每个数据库锁的报告

  • --n=<count>, --rowcount=<count>  要打印的统计行数(0 表示不确定)

  • --json  以 JSON 格式输出

字段说明

当连接到 mongod 实例时,程序会首先报告连接情况,然后按照配置的频率报告统计数据。mongotop 返回以毫秒(ms)为单位的时间值。例如:

C:UsersAdministrator> mongotop
2023-09-11T12:34:45.707+0800    connected to: mongodb://localhost/

                   ns    total    read    write    2023-09-11T12:34:46+08:00
 admin.system.version      0ms     0ms      0ms
config.system.sessions      0ms     0ms      0ms
  config.transactions      0ms     0ms      0ms
 local.system.replset      0ms     0ms      0ms

                   ns    total    read    write    2023-09-11T12:34:47+08:00
 admin.system.version      0ms     0ms      0ms
config.system.sessions      0ms     0ms      0ms
  config.transactions      0ms     0ms      0ms
 local.system.replset      0ms     0ms      0ms
...

ngotop 只报告活动的命名空间或数据库,具体取决于 --locks 选项。如果你看不到数据库或集合,说明它最近没有活动。你可以在 mongo shell 中执行一个简单的操作来生成活动数据库,从而影响 mongotop。

  • mongotop.ns  包含数据库名称空间,由数据库名称和集合组成。如果使用 mongotop --locks 则 ns 字段不会出现在 mongotop 输出中。

  • mongotop.db  包含数据库名称。名为 . 的数据库指的是全局锁,而不是特定的数据库。除非您使用 --locks 选项调用 mongotop,否则该字段不会出现。

  • mongotop.total  提供该 mongod 在该命名空间上运行的总时间。

  • mongotop.read  提供该 mongod 对该命名空间执行读取操作所花费的时间。

  • mongotop.write  提供该 mongod 对该命名空间执行写操作所花费的时间。

  • mongotop.<timestamp>  为返回的数据提供时间戳。

工具用法

以下是一些常见的 mongotop 命令示例,展示了不同的用法:

(1)显示默认的MongoDB实例的操作统计信息:

mongotop

(2)显示指定 MongoDB 实例的操作统计信息:

mongotop --host <hostname> --port <port>

(3)指定特定的刷新间隔(单位为秒):

mongotop --host <hostname> --port <port> --rowcount <refresh_interval>

(4)显示 MongoDB 实例的操作统计信息,并以JSON格式输出:

mongotop --host <hostname> --port <port> --json

(5)只显示指定的数据库的操作统计信息:

mongotop --host <hostname> --port <port> --db <database_name>

(6)显示 MongoDB 实例的操作统计信息,并指定用户名和密码:

mongotop --host <hostname> --port <port> --username <username> --password <password>

关于 mongotop 命令更多信息,请访问官网 https://www.mongodb.com/docs/database-tools/mongotop 

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号