对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

mongotop

本文档适用于 mongotop 的 100.19.1 版本。

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 mongod连接到远程托管 上运行的mongodb0.example.com 实例,并每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
...
--help

返回有关 mongotop 的选项和使用的信息。

--verbose, -v

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

--quiet

在尝试限制输出量的安静模式下运行 mongotop。

该选项会抑制:

--version

返回 mongotop 版本号。

--config=<filename>

100.3.0版本新增。

指定 YAML 配置文件的完整路径,该文件包含以下 mongotop 选项的敏感值:

除通过密码提示来指定密码之外,这是为 mongotop 指定密码的另一推荐方法。您可以在文件中使用任何参数的组合。

配置文件采用以下形式:

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

如果指定了password uri选项而不指定 ,则可以使用mongotop 命令行选项来指定连接字符串的其他组件,例如--username 和--host 。

请务必使用相应的文件系统权限保护此文件。

重要

使用 --config 选项时,请注意以下限制和行为:

  • 如果您提供 password 字段,并在 uri 字段中提供一个与密码冲突的连接字符串,则 mongorestore 会抛出错误。

  • 如果您使用 指定配置文件,并使用--config --password--uri、 或--sslPEMKeyPasswordmongotop 命令行选项,则命令行选项将覆盖相应的配置文件选项。

--uri=<connectionString>

指定 MongoDB 部署的可解析 URI 连接字符串(用引号括起):

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

从100.0 的mongotop 版本开始,也可以将连接字符串作为位置参数提供,而不使用--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 格式文档。

注意

connection string中的某些组件也可以使用自己的显式命令行选项来指定,例如--username 和--password 。在提供连接字符串的同时,使用显式选项并指定冲突信息将导致错误。

注意

如果在Ubuntu 上使用mongotop18.04 ,则在使用带有 选项的cannot unmarshal DNS SRV 连接字符串(采用mongodb+srv:// 形式)时,您可能会遇到--uri 错误消息。如果是这样,请改用以下选项之一:

警告

在某些系统上,使用--uri ps选项在连接字符串中提供的密码可能会对其他用户调用的系统状态程序(例如 )可见。请考虑:

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

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

--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 connection string 中指定主机名。在提供连接字符串的同时使用 --host 并指定冲突信息将导致错误。

如果连接到无法访问主节点 (primary node in the replica set)的副本集,mongotop 会返回错误消息。

--port=<port>

默认值:27017

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

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

--ssl

允许连接到已启用 TLS/SSL支持的mongodmongos 或 。

或者,您也可以直接在 中配置 TLS/SSL支持。在提供连接字符串的同时使用URI connection string --ssl并指定冲突信息将导致错误。

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

--sslCAFile=<filename>

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

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

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

--sslPEMKeyFile=<filename>

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

使用 --ssl 选项连接到已启用 CAFile 且未启用 allowConnectionsWithoutCertificates 的 mongod 或 mongos 时,需要使用此选项。

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

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

--sslPEMKeyPassword=<value>

指定用于解密证书密钥文件的密码(即 )。仅当证书密钥文件已加密时才使用--sslPEMKeyFile --sslPEMKeyPassword选项。在所有情况下,mongotop 都会从所有日志记录和报告输出中编辑密码。

如果 PEM文件中的私钥已加密并且您未指定--sslPEMKeyPassword 选项,则mongotop 将提示输入密码。请参阅 TLS/SSL 证书密码。

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

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

警告

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

--sslCRLFile=<filename>

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

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

--sslAllowInvalidCertificates

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

警告

尽管可用,但请尽可能避免使用 --sslAllowInvalidCertificates 选项。如果需要使用 --sslAllowInvalidCertificates,请仅在不可能入侵的系统上使用该选项。

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

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

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

--sslAllowInvalidHostnames

禁用 TLS/SSL 证书中的主机名验证。即使证书中的主机名与指定的主机名不匹配,也支持 mongotop 连接到 MongoDB 实例。

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

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

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

指定用户名,用于对使用身份验证的MongoDB 数据库进行身份验证。与--password 和--authenticationDatabase 选项结合使用。

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

如果使用 连接到MongoDB Atlas MONGODB-AWSauthentication mechanism群集,您可以在以下位置指定您的 AWS访问权限密钥ID :

请参阅使用 AWS IAM 凭据连接到 MongoDB Atlas 集群,了解每个凭据的示例。

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

指定密码,用于对使用身份验证的 MongoDB--authenticationDatabase--username 数据库进行身份验证。与 和 选项结合使用。

要提示用户输入密码,请传递不带 的 选项,或指定空字符串作为--username --password--password值,如--password "" 所示。

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

如果使用 连接到MongoDB Atlas MONGODB-AWSauthentication mechanism群集,您可以在以下位置指定 AWS 秘密访问权限密钥:

请参阅使用 AWS IAM 凭据连接到 MongoDB Atlas 集群,了解每个凭据的示例。

警告

在某些系统上,使用--password ps选项直接提供的密码可能会对其他用户调用的系统状态程序(例如 )可见。请考虑:

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

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

--awsSessionToken=<AWS Session Token>

如果使用 连接到MongoDB Atlas 群集,并且除了MONGODB-AWSauthentication mechanism AWS访问权限密钥ID和秘密访问权限密钥之外还使用会话令牌,则可以在以下位置指定 AWS 会话令牌:

请参阅使用 AWS IAM 凭据连接到 MongoDB Atlas 集群,了解每个凭据的示例。

仅在使用 MONGODB-AWS authentication mechanism 时有效。

--authenticationDatabase=<dbname>

指定已创建指定 --username 的身份验证数据库。对于使用自管理部署中的身份验证的 mongod 和 mongos 实例,必须使用 --authenticationDatabase。请参阅身份验证数据库。

如果您使用 GSSAPI (Kerberos)、PLAIN (LDAP SASL) 或MONGODB-AWSauthentication mechanisms ,则必须将--authenticationDatabase 设立为$external 。

或者,也可以直接在URI connection string 中指定身份验证数据库。在提供连接字符串的同时使用--authenticationDatabase 并指定冲突信息将导致错误。

--authenticationMechanism=<name>

默认值:SCRAM-SHA-1

指定mongotop 实例用于向mongod 或mongos 进行身份验证的身份验证机制。

在版本 100.1.0 中进行了更改:

从版本 100.1.0 开始,mongotop 添加了在连接 MongoDB Atlas 集群时对 MONGODB-AWS 身份验证机制的支持。

值
说明

5802使用 SHA-1 哈希函数的 RFC 标准 Salted 挑战响应身份验证机制。

7677使用 SHA-256 哈希函数的 RFC 标准 Salted 挑战响应身份验证机制。

需将 featureCompatibilityVersion 设为 4.0。

MongoDB TLS/SSL 证书身份验证。

MONGODB-AWS

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

100.1.0版本新增。

GSSAPI (Kerberos)

使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。

普通版 (LDAP SASL)

使用 LDAP 进行外部身份验证。您也可使用 PLAIN 对数据库内用户进行身份验证。PLAIN 以纯文本形式传输密码。此机制仅在 MongoDB Enterprise 中可用。

或者,也可以直接在URI connection string 中指定身份验证机制。在提供连接字符串的同时使用--authenticationMechanism 并指定冲突信息将导致错误。

--gssapiServiceName=<serviceName>

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

此选项仅在 MongoDB Enterprise 中可用。

--gssapiHostName=<hostname>

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

此选项仅在 MongoDB Enterprise 中可用。

--locks

切换mongotop 模式以报告每个数据库锁的使用情况。此数据仅在连接到MongoDB.2 6或更旧的实例时可用。

--locksmongod30在针对不报告每个数据库锁使用情况的 或较新实例调用 时, 会返回错误。

--rowcount=<int>, -n=<int>

mongotop 应打印的数据行数。“0 表示不定”

--json

mongotop以JSON格式返回 的输出。除定时数据外,--json 选项还返回轮询间隔内发生的操作次数。

<sleeptime>

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

当连接到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 ,则ns 字段不会出现在mongotop 输出中。

mongotop.db

包含数据库名称。名为 . 的数据库引用的是全局锁,而不是某个特定的数据库。

除非您使用 选项调用mongotop --locks,否则该字段不会出现。

mongotop.total

提供此mongod 在此命名空间上操作所花费的总时间。

mongotop.read

提供mongod 在此命名空间上执行读取操作所花费的时间。

mongotop.write

提供mongod 在此命名空间上执行写入操作所花费的时间。

mongotop.<timestamp>

为返回的数据提供时间戳。

有关监控 MongoDB 的更多信息,请参阅 针对 MongoDB 的监控。

有关各种其他 MongoDB 状态输出的更多背景信息,请参阅:

有关提供MongoDB指标的其他实用程序,请参阅 mongostat。