You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:42:20