【问题标题】:How to manage/rotate/delete mesos logs如何管理/轮换/删除 mesos 日志
【发布时间】:2023-03-23 00:07:01
【问题描述】:

我使用以下命令启动 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 将日志写入单个文件?

谢谢!

【问题讨论】:

    标签: linux logging docker mesos logrotate


    【解决方案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 参数中创建文件夹。

    【讨论】:

      【解决方案2】:

      你可以在 /var/log/mesos 中尝试这样的事情:

      find /var/log/mesos -mtime +7 -name '*log.INFO.*' | xargs --no-run-if-empty rm
      

      调整以匹配 INFO|WARNING|ERROR 等

      【讨论】:

        猜你喜欢
        • 2017-06-19
        • 2012-10-19
        • 1970-01-01
        • 1970-01-01
        • 2018-04-29
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 2022-06-15
        相关资源
        最近更新 更多