logrotate:日志管理工具
1 概念:切割日志&删除旧日志
logrotate软件是一个日志管理工具,用于 切割日志,删除旧的日志文件,并创建新的日志文件,起到“转储作用”,可以为系统节省磁盘空间。一般centos系统已经自带安装好了。
- 日志滚动
logrotate是基于 crontab (定时任务)运行的,运行时,logrotate 会调用配置文件 /etc/logrotate.conf 。可以在 /etc/logrotate.d 目录里放置自定义好的配置文件,用来覆盖 logrotate.conf 的缺省值。
# 查看版本
logrotate --version
2 配置logrotate
2.1 配置方式:logrotate.conf+logrotate.d/*.conf
默认执行脚本: /usr/sbin/logrotate
默认配置文件: /etc/logrotate.conf
自定义配置目录: /etc/logrotate.d/*.conf
/etc/logrotate.conf 通过 include 指令,会引入 /etc/logrotate.d 目录下的自定义的配置文件。
①/etc/logrotate.conf:存放默认日志策略(里面会导入自定义日志配置)
在/etc/logrotate.conf该配置文件中通过:include /etc/logrotate.d ,将自定义日志滚动策略添加到配置文件
# 查看默认配置文件
cat /etc/logrotate.conf
[root@ziyi ~]# cat /etc/logrotate.conf
weekly # 默认每周执行一次日志轮询
rotate 4 # 默认保留4个日志文件
create # 自动创建新的日志文件,新的文件和原来的文件具有相同的权限
dateext # 日志切割后,文件以当前日志为结尾,例如:messages-20181125
#compress # 指定不压缩转储文件,如果需要压缩,去掉注释就可以了。
include /etc/logrotate.d # 将/etc/logrotate.d目录中的配置文件加载进来
/var/log/wtmp {
# 针对wtmp日志的配置参数
monthly # 每月切割一次
create 0664 root utmp # 新建日志的权限为0644,用户为root,组为utmp
minsize 1M # 文件大小超过1M后才会切割
rotate 1 # 只保留1个日志文件
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp #新建日志的权限为0644,属主为root,属组为utmp
rotate 1
}
# system-specific logs may be also be configured here.
修改配置文件后,并不需要重启服务
。 由于 /usr/sbin/logrotate 实际上只是一个可执行文件,不是以 daemon 运行。
②/etc/logrotate.d/ 目录:存放自定义日志滚动策略
/etc/logrotate.d/ 目录,通常一些第三方软件包的配置, 如 yum,zabbix-agent,syslog,nginx 等。
[root@ziyi logrotate.d]# cat yum
/var/log/yum.log {
missingok
notifempty
maxsize 30k
yearly
create 0600 root root
}
2.2 常用参数
1. 切割周期:daily、weekly、monthly、yearly
切割周期,多久切割一次。
daily : 切割周期为 每天
weekly : 切割周期为 每周
monthly : 切割周期为 每月
yearly: 切割周期为 每年
2. 切割大小:size 30k、size 100M
当日志文件到达指定的大小时才转储。
默认单位是 bytes。bytes (缺省) 及 KB (sizek) 或 MB (sizem)
如: size 30k、 size 50M
3. 日志文件保留个数:rotate 2(保留两份),默认为0不保留
日志文件保留备份的个数。默认是 0 。
如:0 指没有备份;5 指保留最近的5个备份,其余的全部删除。