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