一、查看配置文件/var/log下面的文件解释

  messages 系统日志
  boot.log 系统启动日志
  dmesg 核心日志
  maillog 邮件日志
  cron   周期性的计划任务日志
  secure 安全相关的日志(网络连接登录系统信息)
  btmp 二进制文件,记录远程登录失败日志
  wtmp 二进制文件 记录所有登入和登出的信息  


二、日志文件由rsyslog服务管理

日志格式分为:文本格式、二进制日志、数据库日志

 1、查看软件是否安装

# rpm -ql rsyslog
 rsyslog-5.8.10-8.el6.x86_64

2、查看软件带来的文件列表
  # rpm -ql rsyslog
  /etc/logrotate.d/syslog  日志轮转
  /etc/rc.d/init.d/rsyslog 服务启动脚本
  /etc/rsyslog.conf 主配置文件
  /etc/rsyslog.d 该服务的主目录
  /sbin/rsyslogd 二进制的命令

3、确认服务是否运行
 #service rsyslog status
 rsyslogd (pid  1785) is running...


4、了解主配置文件

# cat /etc/rsyslog.conf |grep -v ^#|grep -v ^$
  $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
  $ModLoad imklog   # provides kernel logging support (previously done by rklogd)
  $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  $IncludeConfig /etc/rsyslog.d/*.conf
  *.info;mail.none;authpriv.none;cron.none                /var/log/messages
  authpriv.*                                              /var/log/secure   
  mail.*                                                  -/var/log/maillog   邮件的日志
  cron.*                                                  /var/log/cron 
  *.emerg                                                 *
  uucp,news.crit                                          /var/log/spooler 
  local7.*                                                /var/log/boot.log      启动日志

*  代表任何服务或者任何日志级别

.   用来分割服务和日志级别  cron.err

, 用来分割不同的服务  cron,mail.err

; 用来分割服务,日志组合  cron.err ; mail.info

!   排除操作,前面的有相同的服务才有意义

=  代表等于某个日志级别

-  指定目标文件时,代表同步写入


日志消息的级别


        #define KERN_EMERG    "<0>"  /* system is unusable               */
       #define KERN_ALERT    "<1>"  /* action must be taken immediately */
       #define KERN_CRIT     "<2>"  /* critical conditions              */
       #define KERN_ERR      "<3>"  /* error conditions                 */
       #define KERN_WARNING  "<4>"  /* warning conditions               */
       #define KERN_NOTICE   "<5>"  /* normal but significant condition */
       #define KERN_INFO     "<6>"  /* informational                    */
       #define KERN_DEBUG    "<7>"  /* debug-level messages             */


 0  紧急 会导致主机系统的不可用
  1  警告 非常严重 必须马上采取措施的问题
  2  严重 比较严重的情况
  3  错误 运行出现错误
  4  警告 可能会影响系统功能的事件
  5  不会影响系统但需要关注
  6  一般信息
  7  调试信息 (开发人员)

 本地日志管理:
 demo1: 开启所有大于等于debug 级别的日志记录到/var/log/debug
 1、修改配置文件
  /etc/rsyslog.conf
  *.debug        /var/log/debug

 2、重新加载或者重新启动服务
service rsyslog restart

 3、测试验证
# cat /var/log/debug


demo2:
 mail服务的等于info级别的日志记录到/tmp/mail-log
 1、配置文件 /etc/rsyslog.conf
mail.=info                              /tmp/mail-log
 
  2、重新启动rsyslog服务
 service rsyslog restart

 3、测试验证:
 # tail -f /tmp/mail-log


demo3:将ssh日志文件单独记录到/var/log/ssh
 1、通过修改ssh服务的配置文件来指定记录ssh服务的载体(设备)local0
  # vim /etc/ssh/sshd_config
     SyslogFacility local0

 2、重新启动ssh服务 service sshd restart

 3、将来自于local0设备的日志存放到/var/log/ssh——>修改/etc/rsyslog.conf
  vim /etc/rsyslog.conf
   local0.*                                                /var/log/ssh

 4、重启服务
  service rsyslog restart
 
  5、测试验证 有显示代表成功
  # tail -f /var/log/ssh


五、远程日志管理
  首先查看server端和client端是否安装
  1、# rpm -q rsrlog
    # rsyslog-5.8.10-8.el6.x86_64
 
  2、启动服务
    service rsyslog restart
 
   配置service机端
   1、 vim /etc/rsrlog.conf    
    
   # Provides UDP syslog reception  UDP的速度较快 ,视频等选择
   # Provides TCP syslog reception  TCP的速率较慢,数据要求较高的
   $ModLoad imudp    
   $UDPServerRun 514
   以两项是看你选择的TCP或UDP打开
 
   2、重启服务
    service rsyslog restart

   4、查看端口是否在监听
    #losf -i :514  514TCP的端口号
   
    #netstat -nltp | grep 514
    tcp        0      0 0.0.0.0:514                 0.0.0.0:*                   LISTEN      3280/rsyslogd       
    tcp        0      0 :::514                      :::*                        LISTEN      3280/rsyslogd       
 
  -n 以数字显示
  -p 显示进程名称
  -u udp协议
  -t tcp协议
  -a 所有的链接
  -l 监听状态

   client端
   1、指定记录ssh服务日志的载体
   /etc/ssh/sshd_conf
   locla0.*        @@10.1.1.254:514   @@代表tcp协议  @代表UDP协议 ip地址选择serner的IPD地址

    2、重启服务
     service rsyslog restart
 
    server端
      1、10.1.1.254将来自local0设备上的日志保存到/var/log/ssh-server
        /etc/rsyslog.conf
         local0.*   /var/log/ssh-server  ssh-server这个文件在配置文件可以自己可以定义,启动服务在/var/log/中就会生成
 
     2、重启服务
         service rsyslog restart

          
    测试:能与客服的相通的主机,ssh链接client端  
    server端查看日志 tai -f /var/log/ssh-server


六、日志论转 logrotate

 1、避免日志过大造成/var/log/ 下文件系统爆满
   2、方面管理查看
    
   # rpm -q logrotate 查看软件是否安装
     logrotate-3.7.8-17.el6.x86_64

      # rpm -ql logrotate
      /etc/cron.daily/logrotate 每天轮转的文件
      /etc/logrotate.conf 主配置文件
      /etc/logrotate.d 主目录(子配置文件)
      /usr/sbin/logrotate 二进制命令

 logrotate配置文件
  /etc/logrotate.conf
   # see "man logrotate" for details
   # rotate log files weekly
     weekly
     以7天为一个周期(单位),每周轮转
     # keep 4 weeks worth of backlogs
     rotate 4
     每4周备份一次(保留4周的日志文件)
     # create new (empty) log files after rotating old ones
     create
     当老的文件轮转后,创建一个空的新的日志文件(文件的权限必须要和老的文件一致)
     # use date as a suffix of the rotated file
     dateext
     老的日志文件以日期作为后缀
     # uncomment this if you want your log files compressed
     #compress
     指定是否需要压缩轮转后的文件
     # RPM packages drop log rotation information into this directory
     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,并且到了轮转周期才会轮转
       #size 1M  只要文件大于1M就轮转,不管有没有到轮转周期
    rotate 1  保留1个月的日志
}


/var/log/btmp {
    missingok  当日志文件不存在时不会报错 logrotate -f /etc/logrotate.conf
   error: stat of  在执行以上条命令时不会报错但是相关的功能是完成列的
    monthly
    create 0600 root utmp
    rotate 1
}


 子配置文件 /etc/logrotate.d/syslog

  sharedscripts
表示日志文件轮转时需要执行prerotate和endscript或者postrotate和endscript之间的shell脚本
    postrotate  表示在轮转之后执行
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript

  sharedscripts
 postrotate  表示在轮转之后执行
    shell 脚本
 endscript

sharedscripts
 prerotate  表示在轮转之前执行
    shell 脚本
 endscript


demo1:删掉所有的日志文件,强制轮转
# find /var/log -type f -exec rm -f {} \;
# logrotate -f /etc/logrotate.conf
error: stat of /var/log/wtmp failed: No such file or director 这个报错表示成功的

 demo2:
配置ssh服务轮转:
方法1:vim /etc/logrotate.conf
/var/log/ssh {
missingok
size 1M
create
monthly
rotate 1

}

重启下服务:service rsyslog restart


方法二:
vim /etc/logrotate.d/ssh

/var/log/ssh {
missingok
size 1M
create
monthly
rotate 1

}

重启下服务:service rsyslog restart