mongotop

在本页面

macOS Sierra and Go 1.6 Incompatibility

在 macOS Sierra 上运行的用户需要 3.2.10 或更高版本的 mongotop。

Description

mongotop提供了一种跟踪 MongoDB 实例mongod花费在读写数据上的时间的方法。 mongotop提供每个集合级别的统计信息。默认情况下,mongotop每秒钟返回一次值。

从系统命令行运行mongotop,而不是mongo shell。

Syntax

Default

mongotop [frequency]

您可以在没有任何命令行选项的情况下运行mongotop来连接到在 localhost 端口27017上运行的mongod实例。默认情况下,mongotop每秒钟返回一次值。

mongotop

要每 30 秒报告mongotop次,请指定时间:

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与各种command-line options一起运行。

例如,要将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,密码-p和认证数据库--authenticationDatabase

mongotop 30 --host mongodb0.example.com --port 27017 -u user -p password --authenticationDatabase admin [additional options]

运行mongotop的用户必须具有serverStatustop特权。

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

当连接到mongod实例时,该程序首先报告该连接,然后以配置的频率报告统计信息。

2019-04-29T15:35:27.785-0400 connected to: 127.0.0.1

             ns    total      read      write    <timestamp>
<db.collection>    81802ms     0ms    81802ms
...

Required Access

为了连接到强制执行授权的mongod,连接用户必须具有serverStatustop特权。

内置角色clusterMonitor提供了这些特权。

Options

  • mongotop

  • --help ``

    • 返回有关 mongotop 的选项和用法的信息。
  • --verbose `,` `-v`

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

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

此选项禁止显示:

  • database commands的输出

  • replication activity

  • 连接接受的事件

  • 连接关闭事件

  • --version ``

    • 返回 mongotop 版本号。
  • --uri <connectionString>

    • 3.4.6 版中的新功能。

指定可解析的URI 连接字符串以连接到 MongoDB 部署。

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

有关连接字符串的组成部分的更多信息,请参见连接字符串 URI 格式文档。

Important

以下命令行选项不能与--uri选项一起使用:

而是将这些选项指定为--uri连接字符串的一部分。

  • --host <hostname><:port> , -h <hostname><:port>
    • 默认:localhost:27017

指定要连接的mongod的可解析主机名。默认情况下, mongotop 尝试连接到端口号27017上在 localhost 上运行的 MongoDB 实例。

要连接到副本集,请指定replSetName以及集合成员的种子列表,如下所示:

--host <replSetName>/<hostname1><:port>,<hostname2><:port>,<...>

指定副本集列表格式时, mongotop 始终连接到primary

您还可以通过指定仅该成员的主机和端口来连接到副本集的任何单个成员:

--host <hostname1><:port>

在 3.0.0 版中进行了更改:如果您使用 IPv6 并使用<address>:<port>格式,则必须将地址和端口组合的一部分括在方括号(例如[<address>])中。

Note

您不能同时指定--host--uri

如果连接到无法访问primary的副本集,则 mongotop 将返回错误消息。

  • --port <port>
    • 默认:27017

指定 MongoDB 实例在其上侦听 Client 端连接的 TCP 端口。

Note

您不能同时指定--port--uri

  • --ipv6 ``
    • 已在 3.0 版中删除.

启用 IPv6 支持,并允许 mongotop 使用 IPv6 网络连接到 MongoDB 实例。在 MongoDB 3.0 之前,您必须指定--ipv6才能使用 IPv6.在 MongoDB 3.0 和更高版本中,始终启用 IPv6.

  • --ssl ``
    • 2.6 版的新功能。

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

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

  • --sslCAFile <filename>
    • 2.6 版的新功能。

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

从 3.4 版开始,如果未指定--sslCAFilessl.CAFile并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。

如果使用 x.509 身份验证,则必须指定--sslCAFilessl.CAFile

Warning

版本 3.2 和更早版本: 对于与mongodmongos的 TLS/SSL 连接(--ssl),如果 mongotop 在没有--sslCAFile的情况下运行,则 mongotop 不会尝试验证服务器证书。这会导致已过期的mongodmongos证书以及冒充有效mongodmongos实例的外部进程的漏洞。确保始终指定 CA 文件以在可能进行入侵的情况下验证服务器证书。

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

  • --sslPEMKeyFile <filename>
    • 2.6 版的新功能。

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

使用--ssl选项连接到已启用CAFile且未启用allowConnectionsWithoutCertificatesmongodmongos时,此选项是必需的。

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

  • --sslPEMKeyPassword <value>
    • 2.6 版的新功能。

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

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

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

  • --sslCRLFile <filename>
    • 2.6 版的新功能。

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

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

  • --sslAllowInvalidCertificates ``
    • 2.6 版的新功能。

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

从 MongoDB 3.6.6 开始,如果在使用 x.509 身份验证时指定--sslAllowInvalidCertificatesssl.allowInvalidCertificates: true,则无效的证书仅足以构建 TLS/SSL 连接,而对于身份验证则“不足”。

Warning

对于与mongodmongos的 TLS/SSL 连接,请尽可能避免使用--sslAllowInvalidCertificates,并且仅在不可能进行入侵的系统上使用--sslAllowInvalidCertificates

如果mongo shell(和其他MongoDB Tools)与--sslAllowInvalidCertificates选项一起运行,则mongo shell(和其他MongoDB Tools)将不会尝试验证服务器证书。这对过期的mongodmongos证书以及冒充有效的mongodmongos实例的外部进程造成了漏洞。

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

  • --sslAllowInvalidHostnames ``
    • 3.0 版中的新功能。

禁用 TLS/SSL 证书中的主机名验证。允许 mongotop 连接到 MongoDB 实例,即使其证书中的主机名与指定的主机名不匹配也是如此。

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

  • --sslFIPSMode ``
    • 2.6 版的新功能。

指示 mongotop 使用已安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用--sslFIPSMode选项。

Note

兼容 FIPS 的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参见为 FIPS 配置 MongoDB

  • --username <username> , -u <username>

Note

您不能同时指定--username--uri

  • --password <password> , -p <password>

在版本 3.0.2 中进行了更改:要提示用户 Importing 密码,请传递不带--password--username选项,或者像--password ""一样将空字符串指定为--password值。

Note

您不能同时指定--password--uri

Note

您不能同时指定--authenticationDatabase--uri

在版本 3.0.0 中更改:使用Authenticationmongodmongos实例需要--authenticationDatabase

  • --authenticationMechanism <name>
    • 默认:SCRAM-SHA-1

在 2.6 版中进行了更改:添加了对PLAINMONGODB-X509身份验证机制的支持。

在版本 3.0 中进行了更改:添加了对SCRAM-SHA-1身份验证机制的支持。将默认机制更改为SCRAM-SHA-1

指定 mongotop 实例用于对mongodmongos进行身份验证的身份验证机制。

ValueDescription
SCRAM-SHA-1RFC 5802使用 SHA1 哈希函数的标准咸化挑战响应身份验证机制。
MONGODB-CRMongoDB 质询/响应身份验证。 (* MongoDB 3.6 中已弃用*)
MONGODB-X509MongoDB TLS/SSL 证书认证。
GSSAPI (Kerberos)使用 Kerberos 的外部身份验证。此机制仅在MongoDB Enterprise中可用。
PLAIN(LDAP SASL)使用 LDAP 的外部身份验证。您也可以使用PLAIN对数据库中的用户进行身份验证。 PLAIN以纯文本形式传输密码。此机制仅在MongoDB Enterprise中可用。

Note

您不能同时指定--authenticationMechanism--uri

  • --gssapiServiceName ``
    • 2.6 版的新功能。

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

此选项仅在 MongoDB Enterprise 中可用。

  • --gssapiHostName ``
    • 2.6 版的新功能。

使用GSSAPI/Kerberos指定服务的主机名。 如果计算机的主机名与 DNS 解析的主机名不匹配。

此选项仅在 MongoDB Enterprise 中可用。

  • --locks ``
    • 切换mongotop的模式以报告每个数据库locks的使用情况。仅当连接到 MongoDB 2.6 或更旧的实例时,此数据才可用。

当针对mongod 3.0 或更高版本的实例调用--locks时,该错误不报告每个数据库的锁使用情况。

  • --rowcount int , -n int

    • mongotop **应该打印的数据行数。 “ 0 表示不确定”
  • --json ``

    • 3.0.0 版中的新功能。

JSON格式返回 mongotop 的输出。

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

Fields

当连接到mongod实例时,该程序首先报告该连接,然后以配置的频率报告统计信息。 mongotop返回指定的时间值(以毫秒为单位)。

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
    • 包含数据库的名称。名为.的数据库引用全局锁,而不是特定的数据库。

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

  • mongotop. total

    • 提供此mongod在此名称空间上花费的总时间。
  • mongotop. read

    • 提供此mongod在此名称空间上执行读取操作所花费的时间。
  • mongotop. write

    • 提供此mongod在此名称空间上执行写操作所花费的时间。
  • mongotop. <timestamp>
    {#mongotop.<timestamp>}

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

Examples

默认情况下,mongotop连接到在 localhost 端口27017上运行的 MongoDB 实例。但是,mongotop可以选择连接到远程mongod实例。有关更多信息,请参见mongotop options

要强制mongotop较少返回,请在命令末尾以秒为单位指定一个数字。在此示例中,mongotop将每 15 秒返回一次。

mongotop 15

此命令产生以下输出:

2019-04-29T15:35:27.785-0400 connected to: 127.0.0.1

                    ns    total    read    write    2019-04-29T15:35:57-04:00
    admin.system.roles      0ms     0ms      0ms
    admin.system.users      0ms     0ms      0ms
  admin.system.version      0ms     0ms      0ms
config.system.sessions      0ms     0ms      0ms
     local.startup_log      0ms     0ms      0ms
  local.system.replset      0ms     0ms      0ms

要每 5 分钟返回一次mongotop报告,请使用以下命令:

mongotop 300

Additional Information

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

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

有关提供 MongoDBMetrics 的其他 Util,请参见mongostat