1. 配置日志路径与级别
在Ubuntu上,MongoDB的日志配置主要通过/etc/mongod.conf文件完成。需修改systemLog部分的关键参数:destination设置为file(指定日志输出到文件),path定义日志文件路径(如/var/log/mongodb/mongod.log),logAppend设为true(确保日志追加而非覆盖),logLevel调整日志详细程度(0-5级,0为默认,5为最详细)。修改后需重启MongoDB服务(sudo systemctl restart mongod)使配置生效。
2. 日志轮转管理
为避免日志文件过大占用磁盘空间,需通过logrotate工具实现自动轮转。创建或编辑/etc/logrotate.d/mongodb文件,添加以下配置:
/var/log/mongodb/mongod.log {
daily # 每天轮转一次
missingok # 日志文件丢失时不报错
rotate 7 # 保留最近7个轮转文件
compress # 压缩旧日志(如gzip)
notifempty # 日志为空时不轮转
create 0640 mongodb mongodb # 新日志文件权限与所有者
sharedscripts # 多个服务共享脚本
postrotate # 轮转后执行的命令
/bin/kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock) 2>/dev/null || true
endscript
}
此配置会自动处理日志轮转,确保旧日志被压缩保留,新日志正常写入。
3. 实时查看与过滤日志
tail -f命令实时查看日志文件更新,如sudo tail -f /var/log/mongodb/mongod.log。grep命令搜索关键词(如错误信息),如sudo grep -i "error" /var/log/mongodb/mongod.log。4. 日志分析与高级工具
jq工具解析JSON格式日志(MongoDB默认日志格式),如sudo cat /var/log/mongodb/mongod.log | jq '.msg',提取日志消息主体。5. 日志备份与权限管理
rsync或cp命令定期备份日志文件到远程存储或本地备份目录,如sudo rsync -av /var/log/mongodb/mongod.log /backup/mongodb/。chown和chmod命令限制日志文件访问权限,确保只有授权用户(如mongodb用户)可读写,如sudo chown mongodb:mongodb /var/log/mongodb/mongod.log、sudo chmod 0640 /var/log/mongodb/mongod.log。