1. 定位MongoDB日志文件
在Debian系统中,MongoDB的日志文件默认存储在/var/log/mongodb/目录下,主日志文件通常命名为mongod.log(部分版本可能为mongodb.log)。可通过ls /var/log/mongodb/命令确认日志文件是否存在。
2. 使用命令行工具查看日志
cat命令查看日志文件全部内容(适用于小文件):cat /var/log/mongodb/mongod.logtail -f命令实时显示日志文件的新增内容(常用于监控实时操作):tail -f /var/log/mongodb/mongod.loggrep命令过滤日志中的关键信息(如错误、查询):grep "error" /var/log/mongodb/mongod.log(查看错误日志)grep "query" /var/log/mongodb/mongod.log(查看查询日志)tail -n命令查看日志文件的最后N行(如最后10条):tail -10 /var/log/mongodb/mongod.log。3. 通过MongoDB Shell管理日志
连接到MongoDB Shell后,可使用以下命令动态管理日志:
db.getLogComponents()(显示各组件(如command、network、query)的日志级别);db.adminCommand({ getLog: "componentName" })(如db.adminCommand({ getLog: "query" })获取查询组件日志);use admin; db.runCommand({ logRotate: 1 })(强制MongoDB重新打开日志文件,配合logrotate使用效果更佳)。4. 利用日志分析工具深度分析
pip3 install mtools;mloginfo:查看日志文件的基本信息(如时长、操作数量);mlogfilter:筛选特定条件的日志(如某段时间内的慢查询):mlogfilter /var/log/mongodb/mongod.log --from "2025-10-01" --to "2025-10-23" --slow 100(筛选2025-10-01至2025-10-23期间的慢查询,阈值为100ms);mplotqueries:生成可视化图表(如查询时间分布):mplotqueries /var/log/mongodb/mongod.log --group namespace --output-file query_dist.png。logstash.conf),将数据存储至Elasticsearch,再通过Kibana创建仪表板,实现日志的实时可视化与交互式分析(适合大规模日志场景)。5. 日志轮转配置(避免文件过大)
使用logrotate工具定期压缩、归档日志文件,配置步骤如下:
/etc/logrotate.d/mongodb配置文件,添加以下内容:/var/log/mongodb/*.log {
daily # 每天轮转一次
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(如.gz格式)
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮转
create 0640 mongodb adm # 创建新日志文件的权限与属主
sharedscripts # 多个日志文件共享同一个postrotate脚本
postrotate # 轮转后执行的命令(通知mongod重新打开日志)
/bin/kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock 2>/dev/null) 2>/dev/null || true
endscript
}
sudo logrotate -f /etc/logrotate.d/mongodb。6. 日志级别与配置优化
db.getLogComponents(),默认级别为info(仅记录必要信息);db.setLogLevel(level, component)命令(如将query组件日志级别设为verbose,记录更详细的查询信息):db.setLogLevel(1, "query")(level范围:0=错误、1=警告、2=信息、3=详细、5=调试);/etc/mongod.conf中的systemLog部分,调整日志路径、级别与轮转策略(如将verbosity设为1,logRotate设为reopen)。