day14

日志管理:


谁会记录日志:

===syslogd,klogd进程(绝大部分日志记录,和系统操作有关,安全,认证,计划任务...)

===有些应用程序例如httpd,mysql,可以以自己的方式记录日志

[root@station230 ~]# ps aux |grep log

root      2183  0.0  0.0   1820   584 ?        Ss   07:06   0:00 syslogd -m 0

root      2187  0.0  0.0   1768   404 ?        Ss   07:06   0:00 klogd -x

root      3955  0.0  0.0   4264   672 pts/1    R+   08:05   0:00 grep log


RHEL6:

rsyslogd


[root@station230 ~]# ls /var/log/

acpid            cron.1     maillog.2   rpmpkgs.2         vbox

anaconda.log     cron.2     messages    samba             vmware

anaconda.syslog  cups       messages.1  scrollkeeper.log  vmware-installer

audit            dmesg      messages.2  secure            vnetlib

boot.log         faillog    mysqld.log  secure.1          wtmp

boot.log.1       gdm        pm          secure.2          xferlog

boot.log.2       httpd      ppp         setroubleshoot    xferlog.1

btmp             lastlog    prelink     spooler           xferlog.2

conman           mail       rhsm        spooler.1         Xorg.0.log

conman.old       maillog    rpmpkgs     spooler.2         Xorg.0.log.old

cron             maillog.1  rpmpkgs.1   tallylog          yum.log


# tail /var/log/messages系统主日志文件

# tail -20 /var/log/messages

# tail -f /var/log/messages


# tail -f /var/log/secure认证,安全

# tail /var/log/maillog跟邮件(sendmail,postfix)相关

# tail /var/log/croncrond进程产生的日志

# tail /var/log/dmesg和系统启动相关  # dmesg

# grep -i ethernet /var/log/dmesg 

# w

# last

# lastlog



syslog两个组件:

klogd:kernel相关日志# tail /var/log/dmesg

syslogd:系统相关日志# vim /etc/syslog.conf 配置文件


# vim /etc/syslog.conf

用来告诉syslogd进程记录哪个设备(facility),关于哪个级别的信息,以及记录到哪个地方去(文件/设备)

authpriv.*                                              /var/log/secure

mail.*                                                  -/var/log/maillog

cron.*                                                  /var/log/cron


====================================================================

对象(设备facility)级别level 动作action

mailinfo /var/log/maillog

cron* @192.168.0.104

authpriv* *(所有终端)

====================================================================


==设备facility:产生日志的对象

# man 3 syslog

       LOG_AUTH

     * LOG_AUTHPRIV  安全认证

     * LOG_CRON      cron and at

       LOG_DAEMON    其它后台进程

       LOG_FTP     FTP

       LOG_KERN      kernel

     * LOG_LOCAL0 through LOG_LOCAL7   用户自定义设备

       LOG_LPR       打印

     * LOG_MAIL      邮件系统

       LOG_NEWS

       LOG_SYSLOG    syslogd自身产生的日志              

       LOG_USER (default)

       LOG_UUCP

 

==级别 即上面设备他们遇到何种情况(正常、错误)才会记录日志

       LOG_EMERG紧急,致命,服务无法继续运行,如配置文件丢失

       LOG_ALERT报警,需要立即处理,如磁盘空使用95%

       LOG_CRIT致命行为

       LOG_ERR错误行为

       LOG_WARNING警告信息

       LOG_NOTICE普通

       LOG_INFO标准信息

       LOG_DEBUG调试信息,排错所需,一般不建议使用

 


示例1: 将日志记录到一个自定义文件

authpriv.*                                              /var/log/auth


示例2: 将安全认证日志记录到一个设备,例如/dev/pts/1

[root@station230 ~]# service syslog restart



===远程日志(集中式日志管理)===

==接收日志服务:192.168.2.168

# vim /etc/sysconfig/syslog

SYSLOGD_OPTIONS="-r -m 0"

# service syslog restart

# netstat -tunlp |grep syslog

udp        0      0 0.0.0.0:514    0.0.0.0:*     8134/syslogd 


==日志客户端

# vim /etc/syslog.conf

authpriv.*                                              @192.168.2.168

# service syslog restart


测试:192.168.2.168,远程日志服务器

# tail -f /var/log/secure



===============================

RHEL6:

# vim /etc/rsyslog.conf

# Provides UDP syslog reception

$ModLoad imudp.so

$UDPServerRun 514

# service  rsyslog restart

===============================



===logrotate(轮转)===

1. 如果没有日志轮转,日文件会越来越大,难以查看

2. 将丢弃系统中最旧的日志文件,以节省空间

3. logrotate本身不是一系统进程,它是通过计划任务crond每天执行 


# cat /etc/cron.daily/logrotate //计划任务每天要做

#!/bin/sh


/usr/sbin/logrotate /etc/logrotate.conf //日志轮转,按/etc/logrotate.conf

EXITVALUE=$?

if [ $EXITVALUE != 0 ]; then

    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"

fi

exit 0



配置文件:/etc/logrotate.conf (决定每个日志文件如何轮转)

         # ls /etc/logrotate.d/

# vim /etc/logrotate.conf

weekly     //轮转的频率,一周轮转

rotate 4//保留4份

create//轮转后创建新文件

#compress//是否压缩

=========全局设置==========

include /etc/logrotate.d  //包含该目录下的文件


/var/log/wtmp {//对该日志文件设置轮转的方法

    monthly//一月轮转一次

    minsize 1M//最小达到1M才轮转

    create 0664 root utmp//轮转后创建新文件,并设置权限

    rotate 1//保留一份

}


/var/log/btmp {

    missingok//丢失不提示

    monthly//每月轮转一次

    minsize 1M//最小达到1M

    create 0600 root utmp//轮转后创建新文件,并设置权限

    rotate 1//保留一份

}



示例:对/var/log/yum.log轮转

# vim /etc/logrotate.d/yum  原有的设置

/var/log/yum.log {//yum日志文件

    missingok//丢失不提示

    notifempty//如果为空,不轮转

    size 30k//30k

    yearly//一年轮转一次

    create 0600 root root//创建新文件

}


修改后的设置

/var/log/yum.log {

    missingok

#    notifempty

#    size 30k

#    yearly

     daily

     rotate 3

    create 0777 root root

}


# /usr/sbin/logrotate /etc/logrotate.conf手工轮转

# grep 'yum' /var/lib/logrotate.status //记录所有日志文件最近轮转的时间

"/var/log/yum.log" 2012-11-10

# date 111114002012

# /usr/sbin/logrotate /etc/logrotate.conf