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

其中最有趣的(也许是最重要的,以及之一)在Linux系统中的目录是/var/log 根据该文件系统层次标准 ,在系统中运行的大多数服务活动将被写入该目录或它的一个子目录中的文件。

这样的文件被称为日志和的关键是检查系统是如何工作(以及它如何表现,在过去) 日志也是信息的第一来源,管理员和工程师们,同时故障排除。

如果我们看一下内容/var/log上一个CentOS / RHEL / Fedora于Debian / Ubuntu(用于多种),我们将看到以下日志文件和子目录。

请注意,在您的情况下,结果可能会有所不同,具体取决于系统上运行的服务及其运行时间。

在RHEL / CentOS和Fedora

# ls /var/log

CentOS 7下的日志文件和目录

在Debian和Ubuntu

# ls /var/log

日志文件和目录在Debian 8

上这两种情况下,我们可以观察到一些日志名称的结束,因为预期在“日志”,而其他要么使用日期(例如,在CentOS maillog中-20160822)更名或压缩(考虑auth.log.2.gz而在Debian mysql.log.1.gz)。

这不是基于所选分布的默认行为,但可以使用配置文件中的指令随时更改,如我们将在本文中看到的。

如果日志被永久保存,它们将最终结束了在那里填的/ var /日志所在的文件系统。 为了防止这种情况,系统管理员可以使用一个很好的工具,叫做logrotate的清理定期日志。

在几句话,logrotate的将重命名或当条件满足(更多有关在一分钟内),压缩主日志,以便下一个事件被记录在一个空文件。

此外,它会删除“旧”的日志文件,并会保留最新的。 当然,我们必须确定什么“旧”的方式和频率,我们希望logrotate的清理日志中的我们。

在Linux中安装Logrotate

为了安装logrotate,只需用你的包管理器:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 
---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

值得和很好地注意到,在配置文件( /etc/logrotate.conf )可以指示其他更具体的设置可以放置在个体.conf里面/etc/logrotate.d中的文件。

建议阅读: 管理系统日志(配置,旋转和导入到数据库中)使用日志轮播

当且仅当以下行存在且未注释掉时,将是这种情况:

include /etc/logrotate.d

我们将坚持使用这种方法,因为它可以帮助我们保持对事物的顺序,并使用Debia N功能框以下的例子。

选项

作为一个非常多才多艺的工具,logrotate提供了大量的指令来帮助我们配置日志在什么时候和如何旋转,以及之后应该发生什么。

让我们插入以下内容/etc/logrotate.d/apache2.conf(注意,最有可能的,你将不得不创建一个文件),并检查每行显示其用途:

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

第一行表示该块内的指令应用于在/ var里面所有日志/日志/ Apache2的

  1. 每周意味着该工具将尝试每周旋转日志。 其他可能的值是每天和每月。
  2. 旋转3表明,只有3旋转日志应当予以保留。 因此,最早的文件将在第四次后续运行中删除。
  3. 大小= 10M设置旋转发生到10M的最小大小。 换句话说,每个日志将不会被旋转,直到它达到10MB。
  4. 压缩delaycompress是用来告诉所有的旋转日志,在最近的一次外,应进行压缩。

让我们执行一个干运行,看看logrotate会做什么,如果它实际上被执行了。 使用-d选项,后跟配置文件(你其实可以省略这个选项运行日志轮播):

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

结果如下:

使用Logrotate旋转Apache日志

相反,压缩日志,我们可以当他们转动日期后重命名。 要做到这一点,我们将使用dateext指令。 如果我们的日期格式比默认的年月日等,我们可以使用的日期格式指定。

推荐阅读: 安装'顶上'监视的Linux系统进程的日志记录活动

注意,如果日志是notifempty的,我们甚至可以防止轮换。 此外,让我们告诉logrotate的邮寄旋转日志,系统管理员(gabriel@mydomain.com在这种情况下)为他/她引用(这将需要进行设置的邮件服务器 ,这超出这个范围的文章)。

如果你想获得logrotate的邮件,你可以安装Postfix邮件服务器作为显示在这里: 安装Postfix邮件服务器

这一次,我们将使用/etc/logrotate.d/squid.conf只旋转/var/log/squid/access.log:

squid.conf
/var/log/squid/access.log {
monthly
create 0644 root root
rotate 5
size=1M
dateext
dateformat -%d%m%Y
notifempty
mail gabriel@mydomain.com
}

正如我们在下面的图片中可以看到的,这个日志不需要旋转。 然而,当尺寸满足条件(大小= 1M),旋转日志将被的access.log-25082016更名(如果日志是8月25日,到2016年旋转)和主日志(access.log的 )将重新具有访问权限的设置创建为0644root作为所有者和组所有者。

最后,当日志的数量最终达到6时,最早的日志将被邮寄给gabriel@mydomain.com。

使用Logrotate旋转Squid日志

现在让我们假设你想在旋转发生时运行自定义命令。 为此,将这样的命令放在postrotate和endscript指令之间。

例如,假设我们要发送电子邮件到根当任何的/ var里面的日志/日志/的MyService被旋转。 让我们以红色加行/etc/logrotate.d/squid.conf:

squid.conf
/var/log/myservice/* {
monthly
create 0644 root root
rotate 5
size=1M
postrotate
echo "A rotation just took place." | mail root
endscript
}

最后,但并非最不重要,一定要注意选择目前在重要/etc/logrotate.d/*.conf覆盖在冲突情况下,主配置文件英寸

Logrotate和Cron

默认情况下,logrotate的安装创建一个名为/etc/cron.daily里面的logrotate crontab文件。 因为它与这个目录里面的其他crontab文件的情况下,将每天执行在上午06点25分开始,如果没有安装anacron的。

建议阅读: 11在Linux中的Cron调度任务的例子

否则,执行将开始上午7点35分左右。 要验证,注意在/ etc / crontab中/ etc / anacrontab中 cron.daily包含行。

概要

在生成多个日志的系统中,可以使用logrotate大大简化对这些文件的管理。 正如我们在本文中解释的,它会定期自动旋转,压缩,删除和邮件日志,或当文件达到指定大小时。

只是确保它设置为作为cron作业运行,logrotate将使事情更容易为您。 有关更多详细信息,请参阅手册页。

您对本文有任何问题或建议吗? 请随时使用下面的评论表格让我们知道。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏