🐧如何在Linux上使用Logrotate设置和管理日志轮换

/ var / log是Linux系统上最有趣的(也许也是最重要的)目录之一。

根据文件系统层次结构标准,在系统上运行的大多数服务的活动都记录到该目录或其子目录之一中的文件中。

这些文件称为日志,是了解系统工作方式(以及过去的行为方式)的关键。

日志(也称为日志)也是管理员和工程师在解决问题时所求助的第一个信息来源。

如果我们查看CentOS / RHEL / Fedora和Debian / Ubuntu中的/ var / log的内容(进行更改),我们可以看到以下日志文​​件和子目录。

请注意,根据您的情况,结果可能会略有不同,具体取决于系统上运行的服务以及启动它们的时间。

在RHEL / CentOS和Fedora上

# ls /var/log

🐧如何在Linux上使用Logrotate设置和管理日志轮换

在Debian和Ubuntu,Kali Linux等上

# ls /var/log

🐧如何在Linux上使用Logrotate设置和管理日志轮换

在这两种情况下,我们都可以注意到某些日志名称按预期以“ log”结尾,而另一些则使用日期重命名(例如CentOS上的maillog-20160822)或压缩(例如auth.log)。 Debian上的.2.gz和mysql.log.1.gz)。

这不是基于所选发行版的默认默认行为,因为可以通过配置文件中的指令随意更改它,正如我们将在本文中看到的那样。

如果日志被永久保存,它们最终将填充包含/ var / log的文件系统。

为避免这种情况,系统管理员可以使用有用的logrotate实用程序定期刷新日志。

简而言之,当满足条件时(一分钟内会更多),logrotate重命名或收缩主日志,以便将下一个事件写入一个空文件。

此外,它将删除“旧”日志文件并保留最新的文件。

当然,我们必须确定“旧”的含义以及我们希望logrotate多久为我们刷新一次日志。

在Linux上安装Logrotate

要安装logrotate,只需使用您的软件包管理器:

---------- На Debian и Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- На CentOS, RHEL и Fedora ---------- 
# yum update && yum install logrotate

值得注意的是,配置文件(/etc/logrotate.conf)可能指示其他更具体的设置可能放在/etc/logrotate.d内部的单独的.conf文件中。

当且仅当以下行存在并且没有被注释掉时,才是这种情况:

include /etc/logrotate.d

我们将坚持这种方法,因为它将帮助我们保持整洁,并在以下示例中使用Debian框。

在Linux上配置Logrotate

作为一个功能非常丰富的工具,logrotate提供了许多指令来帮助我们自定义日志的旋转时间和方式,以及之后应立即执行的操作。

让我们将以下内容插入 /etc/logrotate.d/apache2.conf (请注意,您很可能必须创建此文件)并检查每一行。

/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

第一行表明该块内的指令适用于/ var / log / apache2内的所有日志:

  • 每周一次意味着该工具将尝试每周更新一次日志。 其他可能的值是每日和每月。
  • 3圈表示仅保持3圈。 因此,最早的文件将在随后的第四次运行中删除。
  • size = 10M将旋转的最小大小设置为10M。 换句话说,每个日志只有在达到10MB时才会旋转。
  • compress和delaycompress用于指定应压缩除最近处理的文件以外的所有文件。

让我们进行一次试运行,看看logrotate如果现在实际执行了该怎么办。

使用-d选项,后跟配置文件(您可以通过省略此选项来运行logrotate):

# logrotate -d /etc/logrotate.d/apache2.conf

无需压缩日志,我们可以根据重写日期重命名它们。

为此,我们将使用dateext指令。

如果我们的日期格式与默认的yyyymmdd不同,则可以使用dateformat进行指定。

注意,如果使用notifempty记录为空,我们甚至可以防止轮换。

另外,让我们告诉logrotate将更新的日志发送给系统管理员(在本例中为[email protected])以供他参考(这将需要设置邮件服务器,这超出了本文的范围)。

这次,我们将仅将/etc/logrotate.d/squid.conf用于/var/log/squid/access.log路由:

/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email protected]
}

结论

在生成许多日志的系统上,使用logrotate可以大大简化此类文件的管理。

正如我们在本文中所解释的,它将定期或在文件达到指定大小时自动解压缩,压缩,删除和发送电子邮件日志。

Sidebar