文档菜单
文档首页
/
MongoDB数据库工具

mongotop

在本页

  • 概述
  • 语法
  • 选项
  • 字段
  • 更多信息
  • 了解更多

本文档适用于mongotop100.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 的用户必须具有 serverStatustop 权限。

    有关 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 的用户必须具有 serverStatustop 权限。

有关可用选项的更多信息,请参阅 选项。

连接到 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

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

--quiet

以静默模式运行mongotop,尝试限制输出数量。

此选项抑制

--version

返回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。在提供连接字符串的同时使用显式选项并指定冲突信息将导致错误。

注意

如果在Ubuntu 18.04上使用 mongotop,当使用带有 SRV连接字符串(形式为 mongodb+srv://)和 --uri 选项时,可能会遇到 无法反序列化DNS 的错误信息。如果是这种情况,请使用以下选项之一:

警告

在某些系统上,使用 --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连接字符串中指定主机名。如果同时使用--host和指定冲突信息,将会导致错误。

如果连接到一个主节点不可达的副本集,mongotop将返回错误信息。

--port=<port>

默认值: 27017

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

或者,您也可以直接在URI连接字符串中指定端口号。如果同时使用--port并提供连接字符串,并且指定了冲突信息,将会导致错误。

--ssl

启用与启用TLS/SSL支持的mongodmongos的连接。

或者,您也可以在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但未启用allowConnectionsWithoutCertificatesmongodmongos时,此选项是必需的。

或者,您也可以直接在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,请仅在入侵不可能的系统上使用此选项。

在不验证服务器证书的情况下连接到mongodmongos实例是潜在的安全风险。如果您只需禁用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 环境变量中。

请参阅使用AWS IAM凭据连接到MongoDB Atlas集群的示例

--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 的认证数据库。对于使用 mongodmongos 的实例进行 自我托管部署认证,必须使用 --authenticationDatabase。请参阅 认证数据库

如果使用 GSSAPI (Kerberos)、PLAIN (LDAP SASL) 或 MONGODB-AWS 认证机制,您必须将 --authenticationDatabase 设置为 $external

或者,您也可以直接在 URI 连接字符串 中指定认证数据库。在同时使用 --authenticationDatabase 并指定冲突信息时,将导致错误。

--authenticationMechanism=<name>

默认值: SCRAM-SHA-1

指定 mongotop 实例用于认证到 mongodmongos 的认证机制。

变更版本100.1.0: 从版本 100.1.0 开始,mongotop 在连接到 MongoDB Atlas 集群时,增加了对 MONGODB-AWS 认证机制的支持。

描述

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)
使用 LDAP 进行的外部认证。您还可以使用 PLAIN 进行数据库用户的认证。PLAIN 以明文形式传输密码。此机制仅在 MongoDB Enterprise 中可用。

此外,您还可以直接在 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 返回错误。

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

mongotop 应打印的数据行数。"0 表示无限行数"。

--json

JSON 格式返回 mongotop 的输出。除了时间数据外,--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,则mongotop输出中不会出现ns字段。

mongotop.db

包含数据库名称。名为 . 的数据库表示全局锁,而不是特定数据库。

除非您已使用 mongotop 命令与 --locks 选项调用,否则此字段不会显示。

mongotop.total

提供此 mongod 在此命名空间上操作的累计时间。

mongotop.read

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

mongotop.write

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

mongotop.<timestamp>

提供返回数据的时间戳。

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

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

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

返回

示例