为了帮助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 数据的集群,请在发送 FTDC 数据之前通知MongoDB工程师,以协调适当的安全措施。
详情
您可在 MongoDB GitHub 存储库中查看 FTDC 源代码。ftdc_system_stats_*.ccp 文件专门定义了已捕获的所有特定于系统的诊断数据。
FTDC 默认值
FTDC 按以下默认值运行:
每 1 秒采集一次数据
最大
diagnostic.data文件夹大小为 250 MB(分片的集群为 500 MB)。在版本 8.0.10 中进行了更改:默认值从 200 MB(分片的集群为 400 MB)开始增加。
这些默认值可为MongoDB工程师提供有用数据,同时对性能或存储大小的影响极小。仅当MongoDB工程师出于特定诊断目的提出请求时,才修改这些值。
重要
当文件夹接近其大小限制时, MongoDB会覆盖较旧的数据。为确保保留关键诊断信息,请在事件发生时捕获 diagnostic.data目录。MongoDB清除 FTDC 数据后,就无法再用于诊断分析。
本地部署环境中的数据保留
MongoDB仅在本地托管上存储 FTDC 数据。您不能将 OTel 或其他日志传送管道转发的 FTDC 数据用于诊断目的。
在使用临时存储或 Terraform 等自动化工具的本地部署环境中,终止或重建托管时,FTDC 数据会丢失。为了提高 FTDC 数据用于诊断调查的可用性,请考虑采取以下一项或两项操作:
将
diagnostic.data目录存储在持久存储上。定期将
diagnostic.data目录复制到持久的外部位置。
MongoDB工程师依靠 FTDC 数据进行准确诊断。
禁用 FTDC
警告
不建议在生产环境中使用。
要禁用 FTDC,请在配置文件的 setParameter 设置中使用diagnosticDataCollectionEnabled: false 选项启动 mongod 或 mongos:
setParameter: diagnosticDataCollectionEnabled: false
在 MongoDB 工程师的支持下,禁用 FTDC 可能会增加分析或调试问题时所需的时间或资源。有关 MongoDB 支持的信息,请访问 MongoDB 支持入门。