mesos解决sandbox日志切分问题

mesos 解决sandbox日志切分问题

mesos运行的docker容器,容器打印到前台console的日志会记录到mesos的work目录中容器沙箱中stdout和stderr文件中,容器不重启,日志会一直变大,这样会到只宿主空间变大。

另外这份日志还会日志到系统的/var/log/messages 文件中。

首先关于 mesos-slave 的 work-dir 中设置的目录,里面存放的docker容器的沙箱目录,会有 stderr\stdout等文件,其中这两个文件是记录容器console的日志,会一直保留,直到容器销毁,这样日志文件会持续增大。

为解决这个问题问题。mesos 没有明确的配置。 http://mesos.apache.org/documentation/latest/logging/ 文章中有提到沙箱大小的设置,但是没有测试成功。

我的解决办法:利用系统的 logrotate 模块做日志的切分和删除。

如:添加配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
cat > /etc/logrotate.d/mesos  << EOF
/home/mtime/mesos/slaves/*/frameworks/*/executors/*/runs/latest/stderr
/home/mtime/mesos/slaves/*/frameworks/*/executors/*/runs/latest/stdout
{
daily
missingok
copytruncate
notifempty
size 102400
dateext
rotate 7
}
EOF

这样每天都会切分 大于 100Mb的日志了, 并保留7天。

1
2
3
/usr/sbin/logrotate -d -v -f /etc/logrotate.conf

-d 测试配置文件,不是真正执行。

crontab 中 已经添加,logrotate 会每天执行的。/etc/cron.daily/logrotate

感谢您的支持!