gpt4 book ai didi

linux - Centos/Linux 将 logrotate 设置为所有日志的最大文件大小

转载 作者:IT老高 更新时间:2023-10-28 12:32:17 34 4
gpt4 key购买 nike

我们使用 logrotate 并且它每天运行......现在我们遇到了一些日志显着增长(阅读:gigbaytes)并杀死我们的服务器的情况。所以现在我们想为日志设置一个最大文件大小......

我可以将它添加到 logrotate.conf 中吗?

size 50M

然后它会应用于所有日志文件吗?还是我需要在每个日志的基础上进行设置?

或者有什么其他建议?

(ps。我知道如果您想收到通知,日志会像描述的那样增长,而我们想要做的并不理想 - 但总比因为没有可用空间而无法再登录要好)

谢谢,肖恩

最佳答案

正如 Zeeshan 所说,logrotate 选项 size , minsize , maxsize是轮换的触发器。

为了更好地解释它。您可以随意运行 logrotate,但除非达到阈值,例如达到文件大小或经过适当的时间,否则不会轮换日志。

大小选项不能确保您的轮换日志也具有指定的大小。要使它们接近指定的大小,您需要足够频繁地调用 logrotate 程序。这很关键。

对于快速构建的日志文件(例如每天数百 MB),除非您希望它们非常大,否则您需要确保经常调用 logrotate!这很关键。

因此,要阻止磁盘被数 GB 的日志文件填满,您需要确保足够频繁地调用 logrotate,否则日志轮换将无法如您所愿。

在 Ubuntu 上,您可以通过移动脚本 /etc/cron.daily/logrotate 轻松切换到每小时轮换。至/etc/cron.hourly/logrotate

或添加

*/5 * * * * /etc/cron.daily/logrotate

到您的/etc/crontab 文件。每 5 分钟运行一次。

size选项忽略每日、每周、每月时间选项。但是 minsize 和 maxsize 会考虑到这一点。

那里的手册页有点困惑。这是我的解释。

minsize仅当文件达到适当的大小并且经过设置的时间段时才会旋转。 例如最小化 50MB + 每天如果文件在每天的时间结束前达到 50MB,它会一直增长到第二天。

maxsize当日志达到设定的大小或经过适当的时间时将旋转。例如maxsize 50MB + 每天。如果文件是 50MB 并且我们还没有到第二天,则日志将被轮换。如果文件只有 20MB 并且我们滚动到第二天,那么文件将被轮换。

size当日志 > 大小时将旋转。无论是否指定了每小时/每天/每周/每月。因此,如果您的大小为 100M - 这意味着当您的日志文件大于 100M 时,如果在此条件下运行 logrotate,则日志将被轮换真的。一旦它被旋转,主日志将为 0,随后的运行将什么也不做。

所以在 op 的情况下。特别是最大 50MB 我会使用类似以下的内容:

/var/log/logpath/*.log {
maxsize 50M
hourly
missingok
rotate 8
compress
notifempty
nocreate
}

这意味着他最多可以创建 8 小时的日志。其中有 8 个,每个不超过 50MB。因为他说他每天都会获得数 GB 的数据,并假设它们以相当恒定的速度增加,并且使用了 maxsize,他最终将接近每个文件达到的最大值。因此,它们每个可能接近 50MB。考虑到他们构建的体积,他需要确保 logrotate 的运行频率足以满足目标大小。

由于我已经每小时运行一次,我们需要至少每小时运行一次 logrotate。但是由于它们每天增加 2 GB,而我们想要 50MB……假设恒定速率为每小时 83MB。所以你可以想象,如果我们每小时运行一次 logrotate,尽管将 maxsize 设置为 50,在这种情况下我们最终会得到 83MB 的日志。因此,在这种情况下,将运行设置为每 20 分钟或更短时间就足够了。

确保每 20 分钟运行一次 logrotate。在这种情况下,日志文件在 20 分钟内可能小于 50MB,但在 40 分钟内,超过 50MB,在这种情况下它将轮换。如果我们每 30 分钟旋转一次,在 30 分钟内它小于 50MB(无旋转),在 1 小时内它可能已经构建到 > 80MB,在这种情况下,文件将被旋转,但比我们预期的要大得多。因此,请务必考虑轮换时间。

*/20 * * * * /etc/cron.daily/logrotate 

关于linux - Centos/Linux 将 logrotate 设置为所有日志的最大文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20162176/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com