如何将systemd日志保留一年?

如何将systemd日志保留一年?

默认情况下,我的系统最大大小约为 500MB,其中包含大约 1 个月的日志。

System Journal (/var/log/journal/dd35c7606a5645c5acc9908470c45159) is 483.2M, max 491.5M, 8.2M free.

不知道 491.5M 限制是如何决定的。我更改了以下设置并重新启动了系统

└──> grep SystemMaxUse /etc/systemd/journald.conf
SystemMaxUse=25G

现在最大日志大小为 1.0G。为什么不是25G?

System Journal (/var/log/journal/dd35c7606a5645c5acc9908470c45159) is 568.6M, max 1.0G, 455.3M free.

我的磁盘有足够的可用空间 (94%)

└──> df -h /var/log/journal
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       885G   50G  791G   6% /var

如何进一步增加最大日志大小?

如果可能的话,我想将默认限制保留 1 个月,但不要删除旧的日志文件,而是将其保存在可以按需查询的地方。

更新: 澄清一下,我的日志文件现在在 500MB 上限后被删除,我想将限制增加到 25G。即使设置后SystemMaxUse=25G,限制也不会增加到超过 1GB。

答案1

systemd-journald 选项的完整记录位于自由桌面网

在这种情况下,您要查找的选项是:SystemMaxUse、SystemKeepFree、SystemMaxFileSize 和 SystemMaxFiles。您已设置 SystemMaxUse,这是持久性日志的总限制包括跨靴子的旋转。您的问题是您的正常运行时间太长,超出了单个期刊的限制。因此,您也应该将 SystemMaxFileSize 设置为 25GB,以便允许非常大的单个日志。

此外,您应该将 SystemMaxFiles 设置为较大的值,例如 1000,这样您可以每天重置近 3 次,并且仍然不会删除一年中第一天的日志,除非您用完分配的空间。

此外,您应该将 MaxRetentionSec 设置为 31536000 以获得 365 天的保留,如上所述。

本质上,日志保留的条件必须全部组合在一起才能保留日志,以便应用并需要设置任何适用的规则。因此,即使这个答案也可能是不完整的。

答案2

文件中有完全需要的选项journald.conf

从手册页[1]

MaxFileSec=

    The maximum time to store entries in a single
    journal file before rotating to the next one.
    [...]
    This setting takes time values which may be
    suffixed with the units "year", [...]

[1] https://www.freedesktop.org/software/systemd/man/journald.conf.html#MaxFileSec=

答案3

设置一个定期运行的 cronjob,例如,对于您的用例,每天运行:

$ journalctl --vacuum-time=1y

参考文献:

答案4

不知道 491.5M 限制是如何决定的。我更改了以下设置并重新启动了系统

和:

默认情况下,我的系统最大大小约为 500MB,其中包含大约 1 个月的日志。

和:

现在最大日志大小为 1.0G。为什么不是25G?

也回答这些问题:

赖因特·范·舒文 2015-11-05 20:42:54 CET

问题描述:我收到有关根分区上磁盘空间的警告。原因是 /var/log/journal 包含千兆字节的日志。
/etc/systemd/journald.conf 中的所有选项都被注释掉,因此journalctl 不会保留特定的最大大小。我们应该对此更加聪明,这样日志就不会填满根分区。

和:

大卫·沃尔泽 2015-11-06 15:18:21 CET

我认为 systemd 只允许它使用其分区上一定百分比的磁盘空间。如果真的无界的话,那就有问题了。

和:

科林·格思里 2015-11-09 10:44:45 CET

因此,为了进一步调查此问题,我需要有关您的系统的信息。您的分区大小是多少,可用空间是多少等。 /var/log/journal 中的文件和文件夹列表也很有用(包括它们的完整路径、日期和大小)。还有“journalctl --disk-usage”(作为 root)的输出和“journalctl -b MESSAGE_ID=ec387f577b844b8fa948f33cad9a75e6”(也作为 root)的输出。

来源:

https://bugs.mageia.org/show_bug。

也回答一下:

如何进一步增加最大日志大小?

使用持久存储进行 Systemd 日志记录

在 RHEL7 中配置 systemd 日志以实现持久性

在 RHEL7 中配置 systemd 日志以实现持久性 默认情况下,日志不会将日志文件存储在磁盘上,仅存储在内存或 /run/log/journal 目录中。这对于最近的日志历史记录(使用日志)来说已经足够了,但如果您决定仅使用日志而不使用任何其他系统日志解决方案,则对于长期日志保留来说就不够了。

来源3:

https://www.linvirtshell.com

或者

管理期刊大小

默认情况下,systemd-journald确保删除较旧的日志记录或日志文件,以保留一定量的可用磁盘空间。在使用 Systemd 进行 Linux 日志记录部分中,我们解释了如何使用配置参数控制删除旧日志数据的阈值。我们还可以使用journalctl它来管理 的大小journal,我们将在本节中更详细地解释。

要检查日志当前占用了多少磁盘空间,请使用 –disk-usage 参数:

$ journalctl --disk-usage

根据 的版本journalctl,输出可能类似于以下内容:

归档日志和活动日志占用磁盘上的 96.0M 空间。

或者:

日志在磁盘上占用 248.0M。

systemd您还可以通过微调这些配置参数来管理日志占用的磁盘空间:

COMPRESS
SYSTEMKEEPFREE
RUNTIMEKEEPFREE
SYSTEMMAXFILESIZE
RUNTIMEMAXFILESIZE
MAXRETENTIONSEC
MAXFILESEC

来源:

https://www.loggly

相关内容