Ubuntu中MongoDB日志管理指南
Ubuntu系统中,MongoDB的主配置文件默认位于/etc/mongod.conf,所有日志相关的参数均在此文件中设置。
在/etc/mongod.conf中找到systemLog部分,配置path参数指定日志文件路径(默认为/var/log/mongodb/mongod.log),并设置logAppend: true确保日志追加而非覆盖:
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
通过verbosity参数控制日志详细程度,取值范围为0-5(0=仅错误,1=一般信息,2=包含慢查询,3=调试信息,4=更详细调试,5=最大详细程度)。生产环境建议保持默认(0),调试时可临时提高:
systemLog:
verbosity: 1 # 示例:设置为1,记录错误和一般信息
Ubuntu自带的logrotate可实现日志自动轮转,避免单个日志文件过大。创建或编辑/etc/logrotate.d/mongodb文件,添加以下配置:
/var/log/mongodb/mongod.log {
daily # 每天轮转
rotate 7 # 保留7个旧日志
compress # 压缩旧日志(gzip)
missingok # 日志丢失不报错
notifempty # 日志为空不轮转
create 640 mongodb mongodb # 新日志权限和所有者
postrotate
/usr/bin/pkill -USR1 mongod # 触发MongoDB重新打开日志文件
endscript
}
配置完成后,可通过sudo logrotate -v /etc/logrotate.d/mongodb测试有效性。
若需立即轮转日志,可通过MongoDB Shell执行命令:
use admin
db.runCommand({ logRotate: 1 })
此命令会重命名当前日志文件(如mongod.log→mongod.log.2025-10-29T10-00-00)并创建新日志。
使用tail命令实时查看日志文件的最新内容(需sudo权限):
sudo tail -f /var/log/mongodb/mongod.log
按Ctrl+C停止实时查看。
通过grep命令过滤关键字(如“ERROR”),快速定位问题:
sudo grep -i "error" /var/log/mongodb/mongod.log
若需查看特定时间段的日志,可结合grep的时间过滤功能。
sudo pip3 install mtools;分析慢查询:mloginfo --slow /var/log/mongodb/mongod.log。将日志存储到独立磁盘分区(如/log/mongodb),避免与数据文件竞争I/O。操作步骤:
sudo mkdir -p /log/mongodb
sudo chown mongodb:mongodb /log/mongodb
修改/etc/mongod.conf中的systemLog.path为/log/mongodb/mongod.log,重启MongoDB生效。
定期使用df -h命令检查日志分区使用情况,设置阈值告警(如90%),避免磁盘满导致服务中断。可编写脚本自动化监控:
THRESHOLD=90
USAGE=$(df -h /log | awk 'NR==2 {print $5}' | cut -d'%' -f1)
if [ $USAGE -gt $THRESHOLD ]; then
echo "Log partition usage at $USAGE%" | mail -s "Disk Alert" admin@example.com
fi
定期备份日志文件至安全位置(如远程服务器或对象存储),可使用rsync或cp命令:
sudo rsync -av /var/log/mongodb/mongod.log /backup/mongodb/
建议结合cron定时任务(如每天凌晨2点)实现自动化备份。