美文网首页
rsyslog日志和轮转工具logrotate

rsyslog日志和轮转工具logrotate

作者: darcyaf | 来源:发表于2020-05-06 18:22 被阅读0次

    日志轮转工具主要用于解决日志文件过大的问题,需要制定规则让文件自动保存。

    auth.log
    auth.log.1
    auth.log.2.gz
    auth.log.3.gz
    auth.log.4.gz
    

    系统日志保存rsyslog

    rsyslog 能够获取系统的日志,基于配置文件定义的规则来做处理,最后可以输出到对应的文件中或者发送到远程的日志服务器.
    在linux上是以服务的形式运行
    这里可以看到这个服务的一些细节。

    • 实际上运行的是/usr/sbin/rsyslogd -n -iNONE
    • 可通过man方法查看命令用法
    (base) ➜  ~ systemctl status rsyslog.service
    ● rsyslog.service - System Logging Service
       Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2020-05-05 22:39:29 CST; 32min ago
         Docs: man:rsyslogd(8)
               https://www.rsyslog.com/doc/
     Main PID: 1011 (rsyslogd)
        Tasks: 4 (limit: 4915)
       Memory: 4.4M
       CGroup: /system.slice/rsyslog.service
               └─1011 /usr/sbin/rsyslogd -n -iNONE
    
    5月 05 22:39:29 darcyaf-computer systemd[1]: Starting System Logging Service...
    5月 05 22:39:29 darcyaf-computer rsyslogd[1011]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd.  [v8.1901.0]
    5月 05 22:39:29 darcyaf-computer systemd[1]: Started System Logging Service.
    5月 05 22:39:29 darcyaf-computer rsyslogd[1011]: rsyslogd's groupid changed to 109
    5月 05 22:39:29 darcyaf-computer rsyslogd[1011]: rsyslogd's userid changed to 104
    5月 05 22:39:29 darcyaf-computer rsyslogd[1011]:  [origin software="rsyslogd" swVersion="8.1901.0" x-pid="1011" x-info="https://www.rsyslog.com"] start
    

    继续man,可以看到配置文件主要是/etc/rsyslog.conf
    引入了imuxsockimklog分别用来处理本地系统日志和内核日志信息流。
    /etc/rsyslog.d/50-default.conf中,主要监控了授权,邮件,内核日志。
    监控的规则由selector.action的格式组成,也可以配置发送到专门的日志服务器.

    auth,authpriv.*         /var/log/auth.log
    *.*;auth,authpriv.none      -/var/log/syslog
    #cron.*             /var/log/cron.log
    #daemon.*           -/var/log/daemon.log
    kern.*              -/var/log/kern.log
    #lpr.*              -/var/log/lpr.log
    mail.*              -/var/log/mail.log
    #user.*             -/var/log/user.log
    

    这里也定义了.指向的是/var/log/syslog这个目录
    logger --priority info hello world 这样就会将日志打印到以上的目录中去了.

    :~# cat /var/log/syslog |grep hello
    May  6 17:35:53 iZbp14iz399actlm root: hello world
    

    logrotate

    这里将所有的文件输出到某个文件,当文件愈来愈大怎么处理,这时就要靠logrotate了
    logrotate是以cronjob的方式来运行的 /etc/cron.daily/logrotate,每天运行一次
    cat /var/lib/logrotate/status这个文件记录了每个需要rotate的文件的当前状态

    logrotate state -- version 2
    "/var/log/nginx/error.log" 2020-5-6-6:25:1
    "/var/log/syslog" 2020-5-6-6:25:1
    "/var/log/dpkg.log" 2020-5-1-6:25:1
    "/var/log/unattended-upgrades/unattended-upgrades.log" 2020-5-6-6:0:0
    "/var/log/unattended-upgrades/unattended-upgrades-shutdown.log" 2020-3-29-6:0:0
    "/var/log/auth.log" 2020-5-4-6:25:1
    "/var/log/apt/term.log" 2020-5-1-6:25:1
    "/var/log/php7.3-fpm.log" 2020-5-3-6:25:1
    "/var/log/apt/history.log" 2020-5-1-6:25:1
    "/var/log/mysql/error.log" 2020-5-6-6:25:1
    

    rotate 7指保存近7天的日志
    compress是做压缩处理
    daily每日做一次rotate
    cat /etc/logrotate.d/rsyslog

    /var/log/syslog
    
            rotate 7
            daily
            missingok
            notifempty
            delaycompress
            compress
            postrotate
                    /usr/lib/rsyslog/rsyslog-rotate
            endscript
    }
    
    /var/log/mail.info
    

    cat /etc/logrotate.conf
    默认定义了日志会每周会做一次rotate

    # see "man logrotate" for details                                 
    # rotate log files weekly                                         
    weekly                                                            
                                                                      
    # use the syslog group by default, since this is the owning group 
    # of /var/log/syslog.                                             
    su root syslog                                                    
                                                                      
    # keep 4 weeks worth of backlogs                                  
    rotate 4                                                          
                                                                      
    # create new (empty) log files after rotating old ones            
    create                                                            
                                                                      
    # uncomment this if you want your log files compressed            
    #compress                                                         
    

    总结

    至此差不多了,
    我参考了其他博客,由于es等的出现,rsyslog使用可能少了,但是如果需要监控像ssh等系统日志等还是用的这个传到日志服务器等,最后再传到elk.
    如果需要添加自定义的rotate,直接在/etc/logrotate.d/目录下添加即可.

    相关文章

      网友评论

          本文标题:rsyslog日志和轮转工具logrotate

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