说到日志轮转,这真是个让系统管理员又爱又恨的功能!我自己就在生产环境吃过亏,那次是半夜被报警叫醒,发现磁盘被日志塞爆了——就因为没配好自动轮转。从那以后我就深刻体会到,与其亡羊补牢手动清理,不如让系统自动管理来得省心。日志轮转本质上就像给日志文件安排了个“管家”,它会定期帮你整理、压缩甚至删除老旧日志,确保磁盘空间始终健康。
日志轮转的核心机制
你可能不知道,大多数Linux发行版其实都内置了logrotate这个神器。它就像个贴心的图书管理员,每天凌晨会悄悄检查你的日志文件。举个例子,当syslog文件超过100MB时,它会自动把当前日志重命名为syslog.1,然后新建一个空文件继续记录。更妙的是,它还能把一周前的日志打包成gz格式,这招能让磁盘占用直接减少70%!我测试过,一个2GB的日志文件压缩后只剩600MB左右,效果相当惊人。
配置文件的奥秘
打开/etc/logrotate.conf看看,这里藏着整个轮转系统的秘密。我特别喜欢里面的“maxage”参数,它能自动清理超过指定天数的日志,比如设成30天,那些陈年老日志就会自动消失。不过要提醒你,有些应用像Nginx比较特殊,需要在/etc/logrotate.d/下面单独配置——记得加上“postrotate”指令,用nginx -s reload让服务重新加载日志文件,否则可能出现日志写入异常。
实战中的那些坑
说起来你可能不信,有次我配置的轮转规则居然失效了!排查半天才发现是selinux在作怪——权限配置不对,logrotate根本动不了日志文件。还有次遇到个奇葩情况:明明配置了daily轮转,日志却堆积如山。后来用strace跟踪才发现,原来cron.daily是在凌晨随机时间执行的,如果服务器那会儿刚好关机,就完美错过了轮转时机。最后改成anacron才解决这个问题。
现在我的标准做法是:关键业务日志保留7天,审计日志保留90天,调试日志?直接设为3天!配合监控告警,再也没被深夜报警吵醒过。说真的,好的日志轮转策略就像给系统买了份保险,虽然平时感觉不到存在,但关键时刻真能救命。

评论