已配置MongoDB日志轮转,但日志未写入日志文件
问题排查与解决步骤
1. 修正日志路径不匹配问题
你的mongod.conf中MongoDB实际写入的日志路径是/var/log/mongodb/mongod.log,但logrotate配置中指定的路径是/var/mongodb/log/*.log——两个路径完全不一致,这是核心问题:logrotate根本没处理MongoDB实际在写的日志文件,自然会出现新创建的日志文件无内容的情况。
修改/etc/logrotate.d/mongodb中的路径配置:
# 替换原路径为MongoDB实际日志路径 /var/log/mongodb/*.log { rotate 10 daily dateext dateformat %Y-%m-%d-%s dateyesterday size 10000M missingok create 600 mongodb mongodb delaycompress compress sharedscripts postrotate /bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid) endscript }
2. 验证PID文件路径正确性
确认MongoDB的PID文件实际位置:查看mongod.conf中的processManagement.pidFilePath配置项,默认路径通常是/var/run/mongodb/mongod.pid而非/var/run/mongodb.pid。如果路径不符,修改logrotate的postrotate命令:
# 替换为实际PID文件路径 /bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid)
3. 手动测试logrotate配置
执行以下命令手动触发日志轮转,验证配置是否生效:
sudo logrotate -v /etc/logrotate.d/mongodb
查看输出是否有报错,同时检查/var/log/mongodb/目录下是否生成新的日志文件,且MongoDB开始向新文件写入内容。
4. 重启MongoDB服务
确保所有配置修改生效:
sudo systemctl restart mongod
5. 排查额外权限问题
如果上述步骤后仍无内容,检查:
- 确认
mongodb用户对/var/log/mongodb/目录有读写权限:
应输出类似ls -ld /var/log/mongodb/drwxr-xr-x 2 mongodb mongodb ...的结果 - 通过
journalctl -u mongod查看MongoDB启动日志,确认是否有日志写入相关的报错信息。
内容的提问来源于stack exchange,提问作者omkark
相关产品推荐
相关产品推荐

