注意:从 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 的一个或多个 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 验证时要使用的主机名(默认:<远程服务器地址>)
--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