为了帮助MongoDB工程师分析服务器行为, mongod和mongos进程包括全时诊断数据捕获 (FTDC) 机制。 FTDC默认处于启用状态。 由于 FTDC 在调试部署中的重要性,FTDC 线程故障是致命的,会停止父mongod或mongos进程。
行为
注意
Windows 上的 FTDC 用户权限
在 Windows 上,要收集磁盘、CPU 和内存等系统数据,FTDC 需要以下群组的 Microsoft 访问权限:
性能监控用户
Performance Log Users
如果运行mongod 和 mongos 的用户不是管理员,请将其添加到这些群组中以日志FTDC 数据。有关更多信息,请参阅此处的Microsoft文档 。
FTDC 定期收集以下命令产生的统计数据:
适用于
local.oplog.rs集合的collStats(仅mongod)connPoolStats(仅限mongos)
根据主机操作系统,诊断数据可能包括以下一项或多项利用率统计信息:
CPU使用率
内存利用率
磁盘利用率与性能相关。FTDC 不包括与存储容量相关的数据。
网络性能统计信息。FTDC 仅捕获元数据,不捕获或检查任何网络数据包。
注意
FTDC 在文件轮转或启动时收集以下命令产生的统计数据:
FTDC 数据文件
mongod 进程将 FTDC 数据文件存储在 storage.dbPath 实例下的 diagnostic.data 目录中。所有诊断数据文件均存储在此目录中。例如,假定 dbPath 为 /data/db,则诊断数据目录将为 /data/db/diagnostic.data。
mongos 进程将 FTDC 数据文件存储在相对于 systemLog.path 日志路径设置的诊断目录中。MongoDB 截断日志路径的文件扩展名并将 diagnostic.data 连接到剩余名称。例如,如果 path 设置为 /var/log/mongodb/mongos.log,则诊断数据目录将为 /var/log/mongodb/mongos.diagnostic.data。
FTDC 隐私
FTDC 数据文件是经过压缩的,不适合人直接阅读。它们继承了与 MongoDB 数据文件相同的文件访问权限。只有有权访问 FTDC 数据文件的用户才能传输 FTDC 数据。
没有系统所有者或运营者的明确许可和协助,MongoDB 工程师将无法访问 FTDC 数据。
FTDC 数据在任何情况下都不会包含以下任何信息:
查询、查询谓词或查询结果的样本
从任一最终用户集合或索引中采样的数据
系统或 MongoDB 用户档案或安全证书
FTDC 数据包含某些主机信息,如主机名、操作系统信息以及用于启动 mongod 或 mongos 的选项或设置。某些组织或监管机构可能将此信息视为受保护或保密,但通常不视为个人身份信息 (PII)。对于这些字段配置了受保护、机密或 PII 数据的集群,请在发送 FTDC 数据之前通知 MongoDB 工程师,以协调适当的安全措施。
详情
您可在 MongoDB GitHub 存储库中查看 FTDC 源代码。ftdc_system_stats_*.ccp 文件专门定义了已捕获的所有特定于系统的诊断数据。
FTDC 默认值
FTDC 按以下默认值运行:
每 1 秒采集一次数据
最大
diagnostic.data文件夹大小为 200MB。
这些默认值旨在为 MongoDB 工程师提供有用的数据,同时尽量减轻对性能或存储空间的影响。仅当 MongoDB 工程师出于特定诊断目的请求修改时,才需要修改这些值。
禁用 FTDC
要禁用 FTDC,请在配置文件的 setParameter 设置中使用diagnosticDataCollectionEnabled: false 选项启动 mongod 或 mongos:
setParameter: diagnosticDataCollectionEnabled: false
在 MongoDB 工程师的支持下,禁用 FTDC 可能会增加分析或调试问题时所需的时间或资源。有关 MongoDB 支持的信息,请访问 MongoDB 支持入门。