And*_*tov 15 logging logrotate mongodb
Mongo文档说我可以:
我希望操作系统的 logrotate 能够压缩旧文件并删除最旧的文件,但是除了发送 SIGUSR1 之外,没有办法告诉 mongod 进程切换当前日志。
所以我写了
/var/log/mongodb/*.log {
daily
rotate 5
compress
dateext
missingok
notifempty
sharedscripts
postrotate
/usr/bin/killall -SIGUSR1 mongod
/usr/bin/killall -SIGUSR1 mongos
endscript
}
Run Code Online (Sandbox Code Playgroud)
到 /etc/logrotate.d/mongo。
现在从 logrotate 和空日志文件中获取命名良好的日志文件,例如mongodb.log.2013-09-18T23-49-44
SIGUSR1 切换的痕迹。如何摆脱后者?
小智 18
从 mongodb 3.0 开始,您可以使用 logRotate 参数更改 mongodb 的行为,在 /etc/mongod.conf 中更改
systemLog:
logAppend: true
logRotate: reopen
Run Code Online (Sandbox Code Playgroud)
另请参阅Mongo 手册。
然后你可以使用这个 logrotate 配置:
/var/log/mongodb/*.log {
daily
rotate 30
size 50M
compress
dateext
missingok
notifempty
sharedscripts
postrotate
/bin/kill -SIGUSR1 `cat /var/lib/mongodb/mongod.lock 2> /dev/null` 2> /dev/null || true
endscript
}
Run Code Online (Sandbox Code Playgroud)
小智 15
如果您在使用 logrotate 将日志文件移开后将 SIGUSR1 发送到 mongod,服务器就会崩溃。
以下配置对于我测试过的版本是安全的 - ubuntu 12.04 上的 2.6.6 - 前面的示例使服务器崩溃。将其放入/etc/logrotate.d/mongod:
/var/log/mongodb/mongodb.log {
weekly
missingok
rotate 4
compress
notifempty
create
postrotate
/usr/bin/pkill -USR1 mongod
rm /var/log/mongodb/mongodb.log.????-??-??T??-??-??
endscript
}
Run Code Online (Sandbox Code Playgroud)
请参阅:https : //jira.mongodb.org/browse/SERVER-11087了解更多详细信息和我在上面使用的 Akshay Kumar 的建议(使用 create 而不是 nocreate 和 cp /dev/null 到日志文件)。
在以后的版本中,应该有一个 logRotate 选项可以用来重新打开文件 - 而不是重命名它 - 这将解决重命名问题 - 但它在我的版本中不起作用(它不受支持)。
参见:https : //github.com/mongodb/mongo/commit/616461d294bd9f5054ca38b302b6fc5d70fde20c
我已经测试过这个
logrotate -v -f /etc/logrotate.d/mongod
Run Code Online (Sandbox Code Playgroud)
小智 13
copytruncate 对于 logrotation 效果很好。
与此类似的配置应该可以为您完成这项工作:
/var/log/mongodb/*.log {
daily
missingok
rotate 5
compress
dateext
delaycompress
copytruncate
notifempty
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38040 次 |
最近记录: |