linux - 如何管理/轮换/删除 mesos 日志

标签 linux logging docker mesos logrotate

我使用以下命令启动 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 访问它。但由于公司政策,这是 Not Acceptable :我必须使用 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 将日志写入单个文件?

谢谢!

最佳答案

可以使用带有 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 参数中的文件夹必须已经创建。

关于linux - 如何管理/轮换/删除 mesos 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43499691/

相关文章:

c++ - 使用 Boost 1.53 的链接阶段 undefined reference

mysql - 是否可以将确定的 $MYSQL_ROOT_PASS 从外部 docker 传递给 MySQL docker?如果是这样怎么办?

amazon-web-services - 如何在运行 Docker 容器的 AWS EC2 实例上启用 HTTPS

linux - 将文件名传递给变量时出现命令未找到错误

linux - 从输入文件中提取子目录列表

java - 如何禁用某些包的日志记录?

c# - 捕获异常记录器错误

eclipse - 如何在 Samsung Smart TV 日志查看器中查看日志

docker - 从 Docker 容器将 PySpark 连接到 Kafka

linux - 将大行拆分为较小的行,并在换行符的开头插入特殊字符