修改配置文件 /etc/mongod.conf,设置日志路径、级别等参数:
systemLog:
destination: file # 日志存储方式(file/syslog)
path: /var/log/mongodb/mongod.log # 日志文件路径
logAppend: true # 是否追加日志
verbosity: 1 # 日志详细程度(0-5,1为默认)
重启服务生效:systemctl restart mongod。
logrotate 工具(推荐)创建配置文件 /etc/logrotate.d/mongodb:
/var/log/mongodb/mongod.log {
daily # 每天轮转
rotate 7 # 保留7天日志
compress # 压缩旧日志
missingok # 忽略缺失文件
notifempty # 非空文件才轮转
copytruncate # 复制后清空原文件(避免进程阻塞)
postrotate # 轮转后发送信号通知MongoDB
/bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid)
endscript
}
启用定时任务:chkconfig logrotate on。
通过MongoDB命令行触发:
mongo --quiet --eval "db.adminCommand({ logRotate: 1 })"
或发送信号:
kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid)
tail -f /var/log/mongodb/mongod.log。less /var/log/mongodb/mongod.log 或 grep "关键字" /var/log/mongodb/mongod.log。logrotate的dateext参数按日期归档,配合cron定时任务删除旧日志(如保留30天):# 示例脚本(/path/to/log_cleanup.sh)
find /var/log/mongodb/ -name "mongod.log.*" -mtime +30 -exec rm -f {} \;
添加到crontab:0 3 * * * /path/to/log_cleanup.sh。部署Graylog等工具,通过配置MongoDB日志输出到syslog,实现集中采集、分析和告警。
注意:操作前建议备份日志文件,生产环境需根据磁盘空间和业务需求调整轮转策略。