【日志】linux 日志系统

来源:互联网 发布:安卓游戏知乎 编辑:程序博客网 时间:2024/05/16 19:55
谁会记录日志:
===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

[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/cron          crond进程产生的日志
# tail /var/log/dmesg          和系统启动相关  # dmesg
# grep -i ethernet /var/log/dmesg

#grep 'Failed' /var/log/secure |awk '{print $11}'|sort |uniq -c
============================
syslog两个组件:
klogd:kernel相关日志          # tail /var/log/dmesg
syslogd:系统相关日志          # vim /etc/syslog.conf 配置文件

# vim /etc/syslog.conf
用来告诉syslod进程记录哪个设备(facility),关于哪个级别的信息,以及记录到哪个地方去(文件/设备)
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog  (带 -的会延迟写入,先存入内存)
cron.*                                                  /var/log/cron

====================================================================
对象(设备facility)          级别level     动作action
mail                              info          /var/log/maillog
cron                              *               @192.168.0.104
authpriv                         *               *(所有用户的终端)
====================================================================
#logger -p emerg 紧急通知


==设备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


===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

===================================================================
0 0
原创粉丝点击