1. 定位MongoDB日志文件
在Debian系统中,MongoDB的默认日志文件路径为/var/log/mongodb/mongod.log。若配置文件(/etc/mongod.conf)中修改了systemLog.path参数,则需以配置文件中的路径为准。
2. 使用命令行工具查看日志
cat命令查看日志文件全部内容(适用于小文件):sudo cat /var/log/mongodb/mongod.logtail -f命令实时显示日志文件的新增内容(常用于监控实时日志):sudo tail -f /var/log/mongodb/mongod.loggrep命令筛选包含指定关键词的日志条目(如“error”“query”):sudo grep "error" /var/log/mongodb/mongod.log(筛选错误日志);sudo grep "query" /var/log/mongodb/mongod.log(筛选查询日志)。3. 使用MongoDB Shell管理日志
db.getLogComponents()命令查看当前日志组件的详细配置(如各组件的日志级别):mongo → db.getLogComponents()db.adminCommand()命令获取指定组件的日志(如“query”组件的慢查询日志):db.adminCommand({ getLog: "query" })logRotate命令,强制MongoDB重新打开日志文件(配合logrotate工具使用):use admin → db.runCommand({ logRotate: 1 })。4. 使用命令行工具分析日志
jq工具提取特定字段(如msg字段),提升可读性:sudo cat /var/log/mongodb/mongod.log | jq '.msg'grep和awk筛选慢查询(假设慢查询阈值为100ms,日志中包含“durationMillis”字段):sudo grep "durationMillis" /var/log/mongodb/mongod.log | awk -F'"durationMillis":' '{print $2}' | awk '$1 > 100'grep -c统计错误日志的条目数:sudo grep -c "error" /var/log/mongodb/mongod.log。5. 使用第三方工具分析日志
mloginfo、mlogfilter、mplotqueries),用于处理和可视化MongoDB日志。
sudo pip3 install mtools;mloginfo /var/log/mongodb/mongod.log;mlogfilter /var/log/mongodb/mongod.log --from "2025-10-01" --to "2025-10-31" --slow 100;mplotqueries /var/log/mongodb/mongod.log --group duration --output-file query_duration.png。logstash.conf文件,匹配日志格式);6. 配置日志轮转避免文件过大
使用logrotate工具定期切割、压缩日志文件,防止mongod.log占用过多磁盘空间。
/etc/logrotate.d/mongodb配置文件,添加以下内容:/var/log/mongodb/mongod.log {
daily # 每天轮转一次
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(使用gzip)
missingok # 若日志文件不存在,不报错
notifempty # 若日志为空,不轮转
sharedscripts # 多个服务共享轮转脚本
copytruncate # 复制日志文件后清空原文件(避免重启mongod)
dateext # 添加日期后缀(如mongod.log-20251031)
postrotate # 轮转后执行的命令
/bin/kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock) 2>/dev/null || true
endscript
}
sudo logrotate -f /etc/logrotate.d/mongodb。7. 优化日志配置提升分析效率
编辑/etc/mongod.conf文件,调整日志参数以平衡日志详细程度和存储开销:
verbosity参数控制日志详细程度(0=仅错误,1=一般信息,默认,5=调试信息):systemLog: verbosity: 1destination设为file(文件输出),path设为日志文件路径,logAppend设为true(重启后追加日志):systemLog: destination: file path: /var/log/mongodb/mongod.log logAppend: trueoperationProfiling.slowOpThresholdMs参数设置慢查询的时间阈值(单位:毫秒,默认100ms):operationProfiling: slowOpThresholdMs: 100 mode: slowOp(仅记录慢查询)。