全天数据诊断数据捕获
为了帮助 MongoDB 工程师分析服务器行为,mongod 和 mongos 进程包含一个全时诊断数据捕获(FTDC)机制。FTDC 默认启用。由于其调试部署的重要性,FTDC 线程失败是致命的,并停止父进程 mongod 或 mongos。
行为
注意
Windows 上的 FTDC 用户权限
在 Windows 上,要收集系统数据,例如磁盘、CPU 和内存,FTDC 需要以下组中的 Microsoft 访问权限
性能监控用户
性能日志用户
如果运行 mongod 和 mongos 的用户不是管理员,请将其添加到这些组中以记录 FTDC 数据。有关更多信息,请参阅此处 Microsoft 文档.
FTDC 定期收集以下命令产生的统计信息
replSetGetStatus(仅适用于mongod)collStats(仅适用于local.oplog.rs集合)(仅适用于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 以以下默认设置运行
每秒捕获一次数据
最大
diagnostic.data文件夹大小为 200MB。
这些默认设置旨在为 MongoDB 工程师提供有用的数据,同时对性能或存储大小的影响最小。只有在 MongoDB 工程师要求用于特定诊断目的时,才需要修改这些值。
禁用 FTDC
要禁用FTDC,请使用配置文件中的 mongod 或 mongos 并在 setParameter 设置中将 diagnosticDataCollectionEnabled: false 选项设置为 false。
setParameter: diagnosticDataCollectionEnabled: false
禁用FTDC可能会增加分析或调试与MongoDB工程师支持相关问题时所需的时间和资源。有关MongoDB支持的信息,请访问 开始使用MongoDB支持。