日志轮循logrotate
Posted skyzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志轮循logrotate相关的知识,希望对你有一定的参考价值。
日志轮循(轮转): logrotate 日志轮转,切割,备份,归档 1、避免日志过大占满/var/log的文件系统。 2、方便日志查看。 3、 将丢弃系统中最旧的日志文件,以节省空间 4、 logrotate本身不是系统守护进程,它是通过计划任务crond每天执行 1、确认软件包是否安装 # rpm -q logrotate /etc/cron.daily/logrotate /etc/logrotate.conf 主配置文件 /etc/logrotate.d 主目录 /usr/sbin/logrotate 二进制命令 2、了解配置文件 # cat /etc/logrotate.conf ---->主配置文件 # rotate log files weekly weekly ---->以7天为一个周期(每周轮转) rotate 4 ---->每4周备份日志文件(保留4份日志文件) create ---->当老的转储文件被归档后,创建一个新的空的转储文件重新记录,权限和原来的转储文件权限一样. dateext ---->用日期来做轮转之后的文件的后缀名 compress ---->指定不压缩转储文件,如需压缩去掉注释就可以了.通过gzip压缩 include /etc/logrotate.d #加载外部目录 # no packages own wtmp and btmp -- we‘ll rotate them here /var/log/wtmp { monthly 表示此文件是每月轮转,而不会用到上面的每周轮转 create 0664 root utmp 轮转之后创建新文件,权限是0664,属于root用户和utmp组 minsize 1M 文件大于1M,而且周期到了,才会轮转 rotate 1 保留1分日志文件,每1个月备份一次日志文件 } /var/log/btmp { missingok 如果日志文件不存在,不报错 monthly create 0600 root utmp rotate 1 } # vim /etc/logrotate.d/syslog ---->子配置文件(没有指定的参数都会以默认方式) /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { sharedscripts 不管有多少个文件待轮转,prerotate 和 postrotate 代码只执行一次 postrotate 轮转完后执行postrotate 和 endscript 之间的shell代码 /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true 这一句话表示轮转后对rsyslog的pid进行刷新(但pid其实不变) endscript } 强制轮转:# logrotate -f /etc/logrotate.conf 说明:先写日志再刷新PID;刷新之前写的日志文件是老的日志文件。 先刷新PID再写日志;日志就会写到新的日志文件里。 常用的指令解释,这些指令都可以在man logrotate 中找得到。 daily 指定转储周期为每天 monthly 指定转储周期为每月 weekly <-- 每周轮转一次(monthly) rotate 4 <-- 同一个文件最多轮转4次,4次之后就删除该文件 create 0664 root utmp <-- 轮转之后创建新文件,权限是0664,属于root用户和utmp组 dateext <-- 用日期来做轮转之后的文件的后缀名 compress <-- 用gzip对轮转后的日志进行压缩 minsize 30K <-- 文件大于30K,而且周期到了,才会轮转 size 30k <-- 文件必须大于30K才会轮转,而且文件只要大于30K就会轮转 不管周期是否已到 missingok <-- 如果日志文件不存在,不报错 notifempty <-- 如果日志文件是空的,不轮转 delaycompress <-- 下一次轮转的时候才压缩 sharedscripts <-- 不管有多少个文件待轮转,prerotate 和 postrotate 代码只执行一次 prerotate <-- 如果符合轮转的条件 则在轮转之前执行prerotate和endscript 之间的shell代码 postrotate <-- 轮转完后执行postrotate 和 endscript 之间的shell代码 给日志文件添加a 属性,这样就只能往文件尾部追加数据,而不能修改已有的数据,也不能删除文件。 添加a属性: chattr +a filename 删除a属性: chattr -a filename 查看隐藏属性: lsattr filename 练习1:将authpriv设备日志记录到/var/log/auth.log 练习2:改变应用程序sshd的日志设备为local5, 并定义local5设备日志记录到/var/log/local5.local 练习3: 要求如下: 1. 记录所有日志类型的 info 级别以及大于 info 级别的信息,保存到/var/log/test,但是 mail 邮件信息,authpriv 验证方面的信息和 cron 时间任务相关的信息除外 *.info;mail.none;authpriv.none;cron.none /var/log/test 2. /var/log/test 日志轮询方式为: 1> 每天轮询一次; 2> 保留 4 个文件; 3> 以时间命名; 4> 创建与原日志文件同名的新文件。 # cat /etc/logrotate.conf /var/log/test { daily rotate 4 dateext create 0600 root root }以上是关于日志轮循logrotate的主要内容,如果未能解决你的问题,请参考以下文章
处理多服务器日志合并处理问题多服务器的日志合并统计——apache日志的cronolog轮循