Linux日志管理2之logratate

一、logrotate日志轮转
1.logrotate和日志
日志轮转是将大量的日志,分割管理,删除旧日志。
日志 记录了程序运行时各种信息。通过日志可以分析用户行为,记录运行轨迹,查找程序问题。但磁盘的空间是有限,日志文件经常需要按时间或大小等维度分成多份,删除时间久远的日志文件。
2.工作原理
按照配置进行轮转
(1)配置文件种类
主配置文件:/etc/logrotate.conf
子配置文件夹:/etc/logrotate.d/*
(2)主文件和子文件

[root@localhost ~]# ls /etc/logrotate.conf
/etc/logrotate.conf
[root@localhost ~]# ls /etc/logrotate.d/
bootlog  firewalld  httpd  mariadb  syslog  wpa_supplicant  yum

(3)主配置文件介绍

[root@localhost ~]# vim /etc/logrotate.conf
weekly
rotate 4
create
dateext
weekly
#compress
include /etc/logrotate.d

/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

注释:
=========全局设置==========
weekly //轮转的周期,一周轮转
rotate 4 //保留4周备份
create //轮转后创建新文件,旧文件被改名
dateext //使用日期作为后缀(扩展名)
//create 和dateext 把旧文件使用日期作为扩展名改名,系统自动创建新文件

[root@localhost ~]# ls /var/log/
boot.log              boot.log-20201211        boot.log-20201212
boot.log-20201213     boot.log-20201214 
boot.log-20201215     boot.log-20201216

#compress //是否压缩,默认不压缩
include /etc/logrotate.d //包含该目录下的子配置文件,系统读取完主配置文件后自动读取子配置文件

/var/log/wtmp { //对某日志文件设置轮转的方法
monthly //一月轮转一次
minsize 1M //最小达到1M才轮转,monthly and minsize(同时达到两个条件)
create 0664 root utmp //轮转后创建新文件,并设置权限 权限值 属主 属组
rotate 1 //备份一份
}

/var/log/btmp {
missingok //丢失不提示
monthly //每月轮转一次
create 0600 root utmp //轮转后创建新文件,并设置权限
rotate 1 //保留一份
}
(4)yum日志轮转实例
yum日志轮转的目标文件 /var/log/yum.log
配置轮转规则

[root@localhost ~]# vim /etc/logrotate.d/yum
/var/log/yum.log {
    missingok
    #notifempty
    #maxsize 30k
    #yearly
    daily
    rotate 3
    # create 0600 root root
    create 0777 root root
}

/var/log/yum.log {
missingok //丢失不执行
#notifempty //空文件不轮转
#maxsize 30k //达到30k轮转, daily or size
#yearly //或者一年一轮转
daily //缩小周期到1天
rotate 3 //轮转保留3次
#create 0600 root root
create 0777 root root //创建新文件
}
测试
错误示范

[root@localhost ~]# /usr/sbin/logrotate /etc/logrotate.conf   //手动轮转
[root@localhost ~]# ls /var/log/yum*
/var/log/yum.log  

正确示范
修改时间,手动触发轮转

[root@localhost ~]# date 12181000  //date  月日时分 8位 把时间向未来推移
20201218日 星期五 10:00:00 CST
[root@localhost ~]# /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
[root@localhost ~]# ls /var/log/yum*
/var/log/yum.log  /var/log/yum.log-20201218
[root@localhost ~]# hwclock -s  //恢复时间
[root@localhost ~]# date
20201217日 星期四 20:34:09 CST
[root@localhost ~]# cat /var/lib/logrotate/logrotate.status  //记录所有日志文件最近轮转的时间
logrotate state -- version 2
"/var/log/yum.log" 2020-12-18-10:0:16
"/var/log/boot.log" 2020-12-17-17:36:1
"/var/log/httpd/error_log" 2020-12-17-17:0:0
"/var/log/wtmp" 2020-12-3-19:0:0
"/var/log/spooler" 2020-12-17-17:36:1
"/var/log/btmp" 2020-12-3-19:0:0
"/var/log/maillog" 2020-12-17-17:36:1
"/var/log/wpa_supplicant.log" 2020-12-3-19:0:0
"/var/log/secure" 2020-12-17-17:36:1
"/var/log/messages" 2020-12-17-17:36:1
"/var/log/cron" 2020-12-17-17:36:1
"/var/log/httpd/access_log" 2020-12-17-17:0:0
[root@localhost ~]# cat /var/lib/logrotate/logrotate.status | grep 'yum'
"/var/log/yum.log" 2020-12-18-10:0:16

(5)拓展讲解

[root@localhost ~]# vim /etc/logrotate.d/httpd
/var/log/httpd/*log {
    missingok //丢失不执行
    notifempty //空文件不轮转
    delaycompress //延迟压缩
    sharedscripts //共享脚本
    postrotate //脚本开始,提交轮转
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript //脚本结束
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值