我使用以下命令启动mesos主容器:
ExecStart=/usr/bin/docker run --rm \
-e MESOS_HOSTNAME={{ ansible_hostname }} \
-e MESOS_IP={{mesos.external_ip}} \
-e MESOS_QUORUM={{mesos.quorum}} \
-e MESOS_ZK={{mesos.zk}} \
-e MESOS_LOG_DIR=/var/log/mesos -v /var/log/mesos:/var/log/mesos \
-e MESOS_WORK_DIR=/var/lib/mesos -v {{mesos_work_dir}}:/var/lib/mesos \
--name mesos-master --net host {{docker.master}}
我得到了大量的mesos日志: mesos logs
lrwxrwxrwx. 1 root root 60 Apr 19 17:14 mesos-master.INFO -> mesos-master.vdorct1.invalid-user.log.INFO.20170419-141458.6
-rw-r--r--. 1 root root 23983 Apr 19 16:46 mesos-master.vdorct1.invalid-user.log.INFO.20170419-134210.6
-rw-r--r--. 1 root root 48678 Apr 19 17:14 mesos-master.vdorct1.invalid-user.log.INFO.20170419-135536.6
-rw-r--r--. 1 root root 6595 Apr 19 17:14 mesos-master.vdorct1.invalid-user.log.INFO.20170419-141436.6
-rw-r--r--. 1 root root 8240 Apr 19 17:14 mesos-master.vdorct1.invalid-user.log.INFO.20170419-141444.6
-rw-r--r--. 1 root root 122324 Apr 19 18:14 mesos-master.vdorct1.invalid-user.log.INFO.20170419-141458.6
-rw-r--r--. 1 root root 253 Apr 19 16:42 mesos-master.vdorct1.invalid-user.log.WARNING.20170419-134210.
我需要管理这些日志,定义要保留的文件数量和/或保留日志的天数。 我可以使用bash + cron来达到它。但由于公司政策,这是不可接受的:我必须使用linux工具。
我尝试配置logrotate。但它不能仅用于删除文件:它只能删除旋转的文件或所有文件。
可能我可以强制mesos在单个文件中写日志:例如
mesos-master.vdorct1.invalid-user.log.INFO
而不是
mesos-master.vdorct1.invalid-user.log.INFO.20170419-134210.6
mesos-master.vdorct1.invalid-user.log.INFO.20170419-135536.6
...
在这种情况下,我可以配置logrotate。
所以问题是:如何使用标准linux工具自动清理mesos日志?或者我如何强制mesos在单个文件中写入日志?
谢谢!
答案 0 :(得分:1)
使用带有olddir参数的logrotate可以实现这样的东西:
/var/log/mesos/*.*.* {
olddir /var/log/mesos/backup
maxsize 2000k
daily
maxage 7
copytruncate
postrotate
find /var/log/mesos /var/log/mesos/backup -mtime +7 -delete
endscript
}
在logrotate运行之前,必须创建olddir参数的文件夹。
答案 1 :(得分:0)
您可以在/ var / log / mesos中尝试这样的事情:
find /var/log/mesos -mtime +7 -name '*log.INFO.*' | xargs --no-run-if-empty rm
调整以匹配INFO | WARNING | ERROR等