rsyslogd 以及日志轮替 logrotate

rsyslog

  1. 日志类型
    auth :(authpriv) 主要与认证有关的机制,例如 login, ssh, su 等需要帐号/密码的咚咚;
    cron: 就是例行性工作排程 cron/at 等产生讯息记录的地方;
    daemon: 与各个 daemon 有关的讯息;
    kern: 就是核心 (kernel) 产生讯息的地方;
    lpr: 亦即是列印相关的讯息啊!
    mail: 只要与邮件收发有关的讯息纪录都属于这个;
    news: 与新闻群组伺服器有关的东西;
    syslog: 就是 syslogd 这支程式本身产生的资讯啊!
    user, uucp, local0 ~ local7 与 Unix like 机器本身有关的一些讯息。
    

  1. 日志等级

    debug:调试信息
    info:
    notice
    warning
    err
    crit
    alert
    emerg
    * :所有日志等级的信息
    .none :忽略日志服务,不记录
    

  1. rsyslog.conf

    *.info;mail.none;authpriv.none;cron.none /var/log/messages
    #除了mail、authpriv、cron之外的任何服务产生日志等级为info的信息都记录在message之内
    
    authpriv.* /var/log/secure
    #authpriv服务发生的任何等级的日志都记录在secure中 
    
    mail.* -/var/log/maillog
    #同理,是Mail服务发生的日志都记录在maillog中
    
    $ModLoad ommysql #引用mysql模块 mail.* :ommysql:localhost,Syslog,rsyslog,password    
    #将mail的任何信息记入:本地mysql中的Syslog库中,用户为rsyslog,密码为:password 
    

  1. 赋值方法

    . :代表大于等于指定的等级的日志会记录到指定的日志里面
    .= :代表日志等级等于指定的等级会记录
    .! :除了指定等级之外的日志会被记录
    



logrotate

  1. 关于logrotate
  • 程序:/usr/sbin/logrotate
  • 配置:/etc/logrotate.conf 和/etc/logrotate.d/

crontab 耦合: /etc/cron.daily/logrotate

  1. logrotate.conf

    #每个礼拜滚一次
    weekly
    
    #保留4个档,比如第5次更替,那第一次的就没了
    rotate 4
    
    #建立新的日志来继续存储
    create
    
    # 将日期作为轮替日志的结尾,比如:maillog-20160701
    dateext
    
    # 是否压缩日志,压缩工具gzip,比如:maillog-20160701.gz
    compress
    
    # 子配置文件的包含目录
    include /etc/logrotate.d
    
    /var/log/wtmp {
        monthly
        create 0664 root utmp
        minsize 1M
        rotate 1
    }
    

  1. logrotate.d/*

    /var/log/maillog
    {
        daily #每天执行
        rotate 7 #保留7份轮替日志
        dateext #以日期作为轮替日志的标识 
        create #创建新文件
        minsize 1G #日志最小1G,不到1G不轮替
    
        postrotate #在启动logrotate前,执行下面的动作
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /bin/kill -HUP `cat /var/run/fail2ban/fail2ban.pid 2> /dev/null` 2> /dev/null || true
        endscript #结束脚本
        compress #压缩
    }
    

  1. 手动日志轮替命令
$ /usr/sbin/logrotate /etc/logrotate.conf



cron、rsyslog、logratate 之间的关系

  • rsyslog:负责将产生的日志分类,打到各个日志文件中
  • logrotate:负责切割日志
  • crontab:定时任务在/etc/下面有 cron.hourly cron.daily cron.weekly cron.monthly 等目录,在对应目录下的程序,会按其给定的时间执行一次,比如cron.daily下的程序会每天都执行一次。

/etc/cron.daily/logrotate:

#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
posted @ 2016-07-01 17:49  tiantiandas  阅读(1769)  评论(1编辑  收藏  举报