logrotate日志轮转

1 日志管理

1.1 问题

  1. 查看rsyslog服务是否开启
  2. 查看/var/log/admin.log文件是否存在
  3. 配置rsyslog服务,把本主机的所有日志信息全部额外保存一份到/var/log/admin.log里面去

1.2 方案

存放日志的重点目录:/var/log。

重要的日志文件:/var/log/messages。

Linux日志服务是rsyslog,在5里面是syslog。

服务名称是rsyslog,配置文件:/etc/rsyslog.conf,是一个独立服务。

/etc/rsyslog.conf 记录格式:设备.优先级... 记录位置。

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:查看rsyslog服务是否开启

命令操作如下所示:

rsyslog status
rsyslogd (pid  1513) 正在运行...
[root@youyi /]#
知识兔

步骤二:查看/var/log/admin.log文件是否存在

命令操作如下所示:

ls /var/log/admin.log
ls: 无法访问/var/log/admin.log: 没有那个文件或目录
[root@youyi /]#
知识兔

步骤三:配置rsyslog服务,把本主机的所有日志信息全部额外保存一份到/var/log/admin.log里面去

命令操作如下所示:

//编辑配置文件
[root@youyi /]# grep admin /etc/rsyslog.conf      //在任意空白处添加即可
*.*         /var/log/admin.log 
[root@youyi /]# /etc/init.d/rsyslog restart
关闭系统日志记录器:[确定]
启动系统日志记录器:[确定]
[root@youyi /]# ls /var/log/admin.log 
/var/log/admin.log
[root@youyi /]#
知识兔

2 logrotate日志轮转

2.1 问题

  1. 针对/var/log/admin.log设置轮转,要求如下
  2. 要求每天轮转一次、保留3个备份、启用压缩
  3. 日志不存在时忽略
  4. 当文件大于100k也达到一天时自动轮转
  5. 创建的新文件权限0600,所有者root,所属组root

2.2 方案

logrotate轮转优点:减小日志文件大小,降低分析难度、丢弃过期日志以节省空、结合cron计划任务每天执行。

/etc/cron.daily/logrotate:每日计划任务执行的脚本。

全局配置文件:/etc/logrotate.conf。

自定义轮转配置文件:/etc/logrotate.d/*。

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:针对/var/log/admin.log设置轮转,要求如下

主要实现以下要求:

  • 每天轮转一次、保留3个备份、启用压缩
  • 日志不存在时忽略
  • 当文件大于100k也达到一天时自动轮转
  • 创建的新文件权限0600,所有者root,所属组root

可以写在全局配置文件中也可以写在自定义配置文件中,推荐自定义配置文件。

命令操作如下所示:


[root@youyi logrotate.d]# vim admin.log
[root@youyi logrotate.d]# cat admin.log 
/var/log/admin.log {                      //注意大括号要写全
        daily                              //每天轮转一次
        rotate 3                           //保留3个备份
        minsize 100k                       //文件大于100k也达到一天时间自动轮转
        missingok                          //丢失不提示
        compress                           // 轮转完的文件压缩
        create 0600 root root          //创建的新文件权限0600,所有者root,所属组root
}
[root@youyi logrotate.d]#
知识兔

测试可以强制轮转一次,命令操作如下所示:

ls /var/log/admin.log*
/var/log/admin.log
[root@youyi logrotate.d]# logrotate -f /etc/logrotate.d/admin.log 
[root@youyi logrotate.d]# ls /var/log/admin.log*
/var/log/admin.log  /var/log/admin.log.1.gz
知识兔
计算机