Full Time Diagnostic Data Capture
为了帮助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 支持入门。