全天数据诊断数据捕获
为了帮助 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支持。