pt-mongodb-summary
收集 MongoDB 集群的信息,从多个数据源汇总给出集群概览。
语法
bash
pt-mongodb-summary [OPTIONS] [HOST:[PORT]]不带参数运行时,默认尝试连接 localhost 的 27017 端口。 工具通过执行管理命令并格式化输出来收集 MongoDB 实例信息。
注意
- 运行用户需要具有
clusterAdmin或root内置角色。 - 无法从要求 SSL 连接的 MongoDB 实例收集统计信息。
- 为获得更好的结果,host 应该是 mongos 服务器。
用法示例
以下命令假定 MongoDB 在本机 localhost:27017 可达;需指定远程时用 --host/--port、位置参数 HOST:PORT 或 --uri(完整 URI 不能同时与 --host/--port 混用)。建议通过 -u 用户名 -p(不带值交互询问)提供认证,避免命令里出现明文密码。命令可直接复制,替换主机与端口即可。
场景:本机默认概览
日常巡检直接跑,汇总本机实例与集群状态:
bash
pt-mongodb-summary场景:指定远程主机端口
连指定 IP 与端口的 mongos 节点做概览(host 用 mongos 结果最佳):
bash
pt-mongodb-summary --host 10.0.0.1 --port 27017场景:用 URI 连接
用完整 MongoDB URI 连接,密码不放命令里(由配置或密钥管理提供):
bash
pt-mongodb-summary --uri=mongodb://user@10.0.0.1:27017场景:JSON 输出便于采集
把概览导出为 JSON,方便接入 CMDB 或监控:
bash
pt-mongodb-summary --uri=mongodb://10.0.0.1:27017 -f json场景:调整运行中操作采样
延长采样间隔、增加采样次数,得到更稳的 Running Ops 统计:
bash
pt-mongodb-summary --running-ops-samples 10 --running-ops-interval 2000场景:带认证的用户名连接
指定账号与认证库连接(密码交互输入):
bash
pt-mongodb-summary --host 10.0.0.1 -u analyst -p -a admin选项
| 选项 | 说明 |
|---|---|
-a, --authenticationDatabase | 用于建立凭据和权限的数据库,默认 admin |
-c, --no-version-check | 运行报告前不检查 MongoDB 版本 |
-f, --output-format | 输出格式:text、json,默认 text |
-h, --help | 显示帮助并退出 |
--host | 要连接的 MongoDB 服务器主机名或 IP |
-i, --running-ops-interval | 运行中操作采样间隔(毫秒),默认 1000 |
-l, --log-level | 日志级别:panic、fatal、error、warn、info、debug,默认 error |
-p, --password | 认证密码;选项与值之间不加空格(-p<password>);不带值时交互式询问 |
--port | 要连接的 MongoDB 服务器端口 |
-s, --running-ops-samples | 运行中操作的采样次数,默认 5 |
--sslCAFile | 用于认证的 SSL CA 证书文件路径 |
--sslPEMKeyFile | 用于认证的 SSL 客户端 PEM 文件路径 |
--uri | 完整 MongoDB URI(描述主机与选项)。命令行选项优先于 URI 设置;提供完整 URI 时不能同时指定 --host 或 --port。例:mongodb://admin:secret@localhost:27017 |
-u, --username | 认证用户名 |
-v, --version | 显示版本信息并退出 |
输出说明
输出分为以下部分(各部分均由相应的管理命令汇总而来):
- Instances:列出连接到当前实例的所有主机。通过
listShards命令及对每个实例执行replSetGetStatus,收集其 ID、类型与副本集。 - This host:当前 MongoDB 实例及底层操作系统的概览,汇总自
hostInfo、getCmdLineOpts、serverStatus以及 OS 进程信息。 - Running Ops:insert、query、update、delete、getMore、command 操作计数的最小/最大/平均值, 通过以固定间隔(每秒)运行 5 次
serverStatus获得。 - Security:安全设置信息,解析
getCmdLineOpts输出并查询admin.system.users与admin.system.roles集合。 - Oplog:oplog 详情。收集集群中每个主机的 oplog 统计,返回
TimeDiffHours最小的那个。 - Cluster wide:分片与非分片数据库、集合的数量和大小。通过
listDatabases以及对每个库的每个集合执行collStats获得。
其他信息
作者:Carlos Salguero
通用说明:已知问题的反馈方式、PTDEBUG 调试安全提示、系统要求基线,见 通用说明。
更多细节请阅读 官方文档。