mongotop
本文档适用于mongotop
的100.10.0
版本。
概述
mongotop
是一个命令行工具,提供了一种方法来跟踪MongoDB实例mongod
读取和写入数据花费的时间。mongotop
在每集合级别提供统计数据。默认情况下,mongotop
每秒返回一次值。
语法
mongotop
语法
mongotop <options> <connection-string> <polling interval in seconds>
在不带任何命令行选项的情况下运行 mongotop
将连接到本地主机上运行的 mongod
实例(端口 27017
),并默认每秒返回一次值。
mongotop
若要使 mongotop
每 30 秒报告一次,请指定轮询间隔
mongotop 30
连接到 mongod
实例后,程序首先报告连接,然后以配置的频率报告统计信息。
2019-04-29T15:35:27.785-0400 connected to: 127.0.0.1 ns total read write <timestamp> <db.collection> 81802ms 0ms 81802ms ...
命令行选项
mongotop [options] [frequency]
您可以使用各种 命令行选项 来运行 mongotop
。
例如,要将 mongotop
连接到远程主机 mongodb0.example.com
上运行的 mongod
实例,并每 30 秒报告一次
您可以包含所需的报告频率(在本例中为 30 秒)和
--uri
选项来指定主机和端口mongotop 30 --uri='mongodb://mongodb0.example.com:27017' [additional options] 如果
mongod
实例需要身份验证,您可以在 URI 连接字符串中指定用户、密码和身份验证数据库mongotop 30 --uri='mongodb://user:password@mongodb0.example.com:27017/?authSource=admin' [additional options] 运行
mongotop
的用户必须具有serverStatus
和top
权限。有关 URI 连接字符串的更多信息,请参阅
--uri
。或者,您可以使用
--host
和--port
选项来指定主机和端口号mongotop 30 --host=mongodb0.example.com --port=27017 [additional options] 如果
mongod
实例需要认证,您可以指定用户-u
和认证数据库--authenticationDatabase
。省略--password
选项来让mongoexport
提示输入密码。mongotop 30 --host=mongodb0.example.com --port=27017 -u=user --authenticationDatabase=admin [additional options] 运行
mongotop
的用户必须具有serverStatus
和top
权限。
有关可用选项的更多信息,请参阅 选项。
连接到 mongod
实例后,程序首先报告连接,然后以配置的频率报告统计信息。
2019-04-29T15:35:27.785-0400 connected to: 127.0.0.1 ns total read write <timestamp> <db.collection> 81802ms 0ms 81802ms ...
选项
--quiet
以静默模式运行
mongotop
,尝试限制输出数量。此选项抑制
数据库命令的输出
复制活动
连接接受事件
连接关闭事件
--config=<filename>
新功能版本100.3.0.
指定包含以下选项敏感值的YAML配置文件的完整路径,这些选项用于
mongotop
这是指定
mongotop
密码的推荐方式,除了通过密码提示指定外。配置文件具有以下形式
password: <password> uri: mongodb://mongodb0.example.com:27017 sslPEMKeyPassword: <password> 指定
password:
字段中的密码并提供一个包含冲突密码的连接字符串,将会导致错误。请确保使用适当的文件系统权限来保护此文件。
注意
如果您使用
--config
指定配置文件,并且还使用--password
、--uri
或--sslPEMKeyPassword
选项,则每个命令行选项都会覆盖配置文件中相应的选项。
--uri=<connectionString>
指定MongoDB部署的可解析的 URI连接字符串,用引号括起来
--uri="mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]" 从
mongotop
的版本100.0
开始,连接字符串也可以作为位置参数提供,而不使用--uri
选项mongotop mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] 作为位置参数,连接字符串可以在命令行的任何位置指定,只要它以
mongodb://
或mongodb+srv://
开头。例如mongotop --username joe --password secret1 mongodb://mongodb0.example.com:27017 --ssl 只能提供一个连接字符串。尝试使用
--uri
选项或作为位置参数包含多个连接字符串都会导致错误。有关连接字符串组件的信息,请参阅连接字符串URI格式文档。
注意
连接字符串中的某些组件可以使用它们自己的显式命令行选项指定,例如
--username
和--password
。在提供连接字符串的同时使用显式选项并指定冲突信息将导致错误。注意
--host=<hostname><:port>, -h=<hostname><:port>
默认: localhost:27017
指定MongoDB部署的可解析主机名。默认情况下,
mongotop
尝试连接到运行在本地主机上、端口号为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
启用与启用TLS/SSL支持的
mongod
或mongos
的连接。或者,您也可以在
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
选项连接到启用了CAFile
但未启用allowConnectionsWithoutCertificates
的mongod
或mongos
时,此选项是必需的。或者,您也可以直接在
URI连接字符串
中指定.pem
文件。当同时使用--sslPEMKeyFile
并指定冲突信息时,将会导致错误。有关TLS/SSL和MongoDB的更多信息,请参阅为mongod和mongos配置TLS/SSL和客户端的TLS/SSL配置。
--sslPEMKeyPassword=<value>
指定解密证书密钥文件的密码(即
--sslPEMKeyFile
)。只有在证书密钥文件被加密时才使用--sslPEMKeyPassword
选项。在所有情况下,mongotop
都将从所有日志和报告输出中删除密码。如果PEM文件中的私钥被加密且您未指定
--sslPEMKeyPassword
选项,则mongotop
将提示输入口令。请参阅TLS/SSL证书口令。或者,您也可以直接在
URI连接字符串
中指定密码。当同时使用--sslPEMKeyPassword
并指定冲突信息时,将会导致错误。有关TLS/SSL和MongoDB的更多信息,请参阅为mongod和mongos配置TLS/SSL和客户端的TLS/SSL配置。
警告
在某些系统中,使用
--sslPEMKeyPassword
选项直接提供的密码可能会被系统状态程序(如ps
)看到,这些程序可能被其他用户调用。请考虑使用--config
选项来指定包含密码的配置文件。
--sslCRLFile=<filename>
指定包含证书吊销列表(CRL)的
.pem
文件。使用相对路径或绝对路径指定.pem
文件的文件名。有关TLS/SSL和MongoDB的更多信息,请参阅为mongod和mongos配置TLS/SSL和客户端的TLS/SSL配置。
--sslAllowInvalidCertificates
绕过服务器证书的验证检查,允许使用无效证书。当使用
allowInvalidCertificates
设置时,MongoDB会将使用无效证书的情况记录为警告。警告
尽管可用,如果可能的话,请避免使用
--sslAllowInvalidCertificates
选项。如果必须使用--sslAllowInvalidCertificates
,请仅在入侵不可能的系统上使用此选项。在不验证服务器证书的情况下连接到
mongod
或mongos
实例是潜在的安全风险。如果您只需禁用TLS/SSL证书中主机名的验证,请参阅--sslAllowInvalidHostnames
。此外,您还可以直接在
URI 连接字符串
中禁用证书验证。同时提供连接字符串并使用--sslAllowInvalidCertificates
以及指定冲突信息将导致错误。有关TLS/SSL和MongoDB的更多信息,请参阅为mongod和mongos配置TLS/SSL和客户端的TLS/SSL配置。
--sslAllowInvalidHostnames
禁用 TLS/SSL 证书中的主机名验证。允许
mongotop
连接到 MongoDB 实例,即使其证书中的主机名与指定的主机名不匹配。此外,您还可以直接在
URI 连接字符串
中禁用主机名验证。同时提供连接字符串并使用--sslAllowInvalidHostnames
以及指定冲突信息将导致错误。有关TLS/SSL和MongoDB的更多信息,请参阅为mongod和mongos配置TLS/SSL和客户端的TLS/SSL配置。
--username=<username>, -u=<username>
指定用于认证 MongoDB 数据库的用户名。与
--password
和--authenticationDatabase
选项一起使用。此外,您还可以直接在
URI 连接字符串
中指定用户名。同时提供连接字符串并使用--username
以及指定冲突信息将导致错误。如果您正在使用
MONGODB-AWS
认证机制
连接到 MongoDB Atlas 集群,则可以在以下字段中指定您的 AWS 访问密钥 ID:此字段
的
连接字符串
中,或在
AWS_ACCESS_KEY_ID
环境变量中。
--password=<密码>, -p=<密码>
指定用于身份验证的密码,用于连接到使用身份验证的MongoDB数据库。与
--username
和--authenticationDatabase
选项一起使用。要提示用户输入密码,请不带
--password
或指定空字符串作为--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
的认证数据库。对于使用mongod
和mongos
的实例进行 自我托管部署认证,必须使用--authenticationDatabase
。请参阅 认证数据库。如果使用 GSSAPI (Kerberos)、PLAIN (LDAP SASL) 或
MONGODB-AWS
认证机制
,您必须将--authenticationDatabase
设置为$external
。或者,您也可以直接在
URI 连接字符串
中指定认证数据库。在同时使用--authenticationDatabase
并指定冲突信息时,将导致错误。
--authenticationMechanism=<name>
默认值: SCRAM-SHA-1
指定
mongotop
实例用于认证到mongod
或mongos
的认证机制。变更版本100.1.0: 从版本
100.1.0
开始,mongotop
在连接到 MongoDB Atlas 集群时,增加了对MONGODB-AWS
认证机制的支持。值描述RFC 5802 标准使用 SHA-1 哈希函数的盐值挑战响应认证机制。RFC 7677 标准使用 SHA-256 哈希函数的盐值挑战响应认证机制。
需要将特征兼容性版本设置为
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)此外,您还可以直接在
URI 连接字符串
中指定身份验证机制。在使用--authenticationMechanism
并提供冲突信息时,将导致错误。
--gssapiServiceName=<serviceName>
使用 GSSAPI/Kerberos 指定服务的名称。只有当服务不使用默认名称
mongodb
时才需要。此选项仅适用于 MongoDB Enterprise。
--gssapiHostName=<hostname>
使用 GSSAPI/Kerberos 指定服务的主机名。如果机器的主机名与 DNS 解析的主机名不匹配,则需要此选项。
此选项仅适用于 MongoDB Enterprise。
--locks
切换
mongotop
的模式以报告每个数据库的 锁 使用情况。此数据仅在连接到 MongoDB 2.6 或更早版本实例时可用。当在不支持报告每个数据库锁使用的
mongod
3.0 或更高版本实例上调用时,--locks
返回错误。
--json
以 JSON 格式返回
mongotop
的输出。除了时间数据外,--json
选项还返回在轮询间隔内发生的操作次数。
字段
当连接到mongod
实例时,程序首先报告连接,然后按配置的频率报告统计信息。mongotop
返回的时值指定为毫秒(ms)。
2019-04-29T15:35:27.785-0400 connected to: 127.0.0.1 ns total read write <timestamp> <db.collection> 81802ms 0ms 81802ms ... ns total read write <timestamp> <db.collection> 0ms 0ms 0ms ...
mongotop
只报告活动命名空间或数据库,具体取决于--locks
选项。如果您没有看到数据库或集合,则表示它们没有最近的操作。您可以在mongo
shell中执行简单操作以生成活动,从而影响mongotop
的输出。
mongotop.ns
包含数据库命名空间,它结合了数据库名和集合。
如果您使用
mongotop --locks
,则mongotop
输出中不会出现ns
字段。
mongotop.db
包含数据库名称。名为
.
的数据库表示全局锁,而不是特定数据库。除非您已使用
mongotop
命令与--locks
选项调用,否则此字段不会显示。
mongotop.total
提供此
mongod
在此命名空间上操作的累计时间。
mongotop.read
提供此
mongod
在此命名空间上执行读取操作的时间。
mongotop.write
提供此
mongod
在当前命名空间上执行写操作所花费的时间。
更多信息
有关监控MongoDB的更多信息,请参阅监控MongoDB。
有关其他MongoDB状态输出的更多背景信息,请参阅
有关提供MongoDB指标的其他实用程序,请参阅mongostat
.