美文网首页
日志切割工具 logrotate

日志切割工具 logrotate

作者: wayyyy | 来源:发表于2022-05-22 19:28 被阅读0次

    如果服务日志文件大小增长较快,不断消耗磁盘空间就会触发告警,如果需要人为定期按照各种维度去手动清理日志就显得十分棘手。为了节省空间和方便整理,可以将日志文件按时间或大小分成多份,删除时间久远的日志文件,这就是通常说的日志滚动。logrotate 是一个Linux系统日志的管理工具,它在很多 Linux 发行版上都是默认安装的。

    logrotate运行机制

    系统会定时运行 logrotate,一般是每天一次,系统是这么实现按天执行的。crontab 会每天定时执行 /etc/cron.daily 目录下的脚本,而这个目录下有个文件叫 logrotate

    # cat /etc/cron.daily/logrotate
    #!/bin/sh
    
    /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    EXITVALUE=$?
    if [ $EXITVALUE != 0 ]; then
        /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
    fi
    exit 0
    

    可以看到这个脚本主要做的事就是以 /etc/logrotate.conf 为配置文件执行了 logrotate。就是这样实现了每天执行一次 logrotate。

    /etc/logrotate.conf 配置文件中有关键的一行:

    include /etc/logrotate.d
    

    这样的话,我们可以将我们自己程序的 logrotate.d 配置文件放在/etc/logrotate.d/。例如 syslog,nginx

    logrotate运行命令
    logrotate [OPTION...] <configfile>
    -d, --debug :debug 模式,测试配置文件是否有错误。
    -f, --force :强制转储文件。
    -m, --mail=command :压缩日志后,发送日志到指定邮箱。
    -s, --state=statefile :使用指定的状态文件。
    -v, --verbose :显示转储过程。
    

    通常惯用的做法是配合 crontab 来定时调用。
    但是,我们可以debug方式运行,测试配置文件是否有错误。

    logrotate -d <configfile>
    

    并不会真正进行 rotate 或者 compress 操作,但是会打印出整个执行的流程,和调用的脚本等详细信息。

    配置文件详解
    cron 任务配置

    参考资料
    1、https://zhuanlan.zhihu.com/p/90507023
    2、https://linux.cn/article-4126-1.html

    相关文章

      网友评论

          本文标题:日志切割工具 logrotate

          本文链接:https://www.haomeiwen.com/subject/deahprtx.html