1 常见的系统日志
/var/log/message 记录系统重要信息日志,非常重要
/var/log/cron 记录系统定时任务日志
/var/log/cups 记录打印信息日志
/var/log/dmesg 系统开机时内核自检信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/btmp 错误登陆信息日志,二进制文件,使用lastb命令查看
/var/log/lastlog 系统所有用户最后一次的登陆时间的日志,二进制文件,使用lastlog命令查看
/var/log/mailog 记录邮件信息的日志
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的授权都会记录,如,系统的登陆,ssh的登陆,su切换,sudo授权,甚至是添加用户和修改用户密码
/var/log/wtmp 永久记录所有用户的登陆,注销信息,同时记录系统的启动,重启,关机事件,二进制文件,使用last查看
/var/log/utmp 记录当前已经登陆的用户信息,这个文件随着用户的登录和注销而不断变化,只记录当前登录用户的信息,使用w,who,users等命令查看
2 查看日志服务和自启动状态
[root@Darren log]# ps aux |grep rsyslogd
[root@Darren log]# chkconfig --list|grep rsyslog
3 日志文件内容的一般格式
时间发生的日期和时间
发生此事件的服务器的主机名
启动此事件的服务名或程序名
事件的具体信息
如/var/llog/message日志:
[root@Darren log]# cat messages
Nov 14 11:34:05 Darren rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1282" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Nov 14 11:36:04 Darren dhclient[1178]: DHCPREQUEST on eth0 to 192.168.91.254 port 67 (xid=0x483caad7)
Nov 14 11:36:04 Darren dhclient[1178]: DHCPACK from 192.168.91.254 (xid=0x483caad7)
4 日志配置文件/etc/rsyslog.conf
[root@Darren log]# cat /etc/rsyslog.conf |grep -v '#'
#记录所有信息,但是忽略mail,authpri,cron的信息
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
#mail产生的日志过多,-表示先存储内存中,批量刷盘
mail.* -/var/log/maillog
cron.* /var/log/cron
#当严重级别为emerg时,以广播的形式发个所有用户
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
/etc/rsyslog.conf的格式:
服务名称;连接符号;日志等级;日志记录位置
(1)服务名称
authpriv 主要与认证有关的机制,如login,ssh,su等需要账号/密码
cron 定时任务cron和at产生的日志
daemon和各个守护进程相关的日志
kern 内核产生的进程
lpr 打印产生的日志
mail 邮件收发信息
news 与新闻服务器相关的日志
user 用户等级类别的日志信息
syslog 就是rsyslogd服务产生的信息
local0-local7 本地使用预留的服务
uucp 子系统的日志信息
(2)连接符号
* 代表所有日志等级
mail.info 表示邮件信息大于等于info级别的信息
.=info表示等于info级别的信息
.!info表示不等于info等级的信息
(3)日志等级
none 忽略某些服务信息
debug 一般调试信息说明
info 基本的通知信息
warning 警告信息
err 错误信息,可能影响服务或系统运行
crit 临界点状况信息,比err严重
alert 警告状态信息,比crit严重
emerg 疼痛等级信息,系统已经无法使用
(4)日志记录位置
日志记录的文件位置
设置chattr +a 只能往日志例写数据,不能修改日志,防止root用户误操作
[root@Darren log]# chattr +a cron
[root@Darren log]# lsattr cron
-----a-------e- cron
例:自定义cron服务的日志
[root@Darren log]# vim /etc/rsyslog.conf
cron.* /var/log/test.log --添加cron服务的所有日志,并记录到/var/log/test.log文件中
[root@Darren log]# /etc/init.d/rsyslog restart --重启rsyslog服务
做个定时任务,测试一下,最后生成日志文件:
[root@Darren log]# crontab -e
*/2 * * * * echo "this is test!">>/tmp/root.txt
[root@Darren log]# ll /var/log/test.log
-rw------- 1 root root 2395 Nov 15 10:17 /var/log/test.log
5 搭建日志服务器
(1)环境
CentOS release 6.8 (Final)
client:192.168.91.5
server:192.168.91.3
client和server防火墙要关闭,并且要ping的通
[root@zhishutang log]# /etc/init.d/iptables stop
[root@Darren log]# /etc/init.d/iptables stop
(2)client配置
编辑客户端文件/etc/rsyslog.conf,指定写日志的主机IP:
[root@zhishutang log]# vim /etc/rsyslog.conf
添加:
*.* @@192.168.91.3:514
重启rsyslog服务:
[root@zhishutang log]# /etc/init.d/rsyslog restart
(3)server配置
编辑服务端文件/etc/rsyslog.conf,开通tcp协议和端口:
[root@Darren log]# vim /etc/rsyslog.conf
$ModLoad imtcp
$InputTCPServerRun 514
重启rsyslog服务:
[root@zhishutang log]# /etc/init.d/rsyslog restart
查看514端口:
[root@Darren log]# netstat -nltup |grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 13721/rsyslogd
tcp 0 0 :::514 :::* LISTEN 13721/rsyslogd
(4)测试
client:
在客户端生成日志
[root@zhishutang log]# logger 'hello word!'
[root@zhishutang log]# cat /var/log/messages|grep 'hello word!'
Nov 14 17:39:20 zhishutang root: hello word!
server:
客户端的日志成功的写入日志服务端
[root@Darren log]# cat /var/log/messages|grep 'hello word!'
Nov 14 17:39:20 zhishutang root: hello word!
6 日志文件轮替logrotate
(1)配置文件
/etc/logrotate.conf
/etc/logrotate.d/
[root@Darren log]# cat /etc/logrotate.conf
weekly 默认每周轮替一次
rotate 4 默认保留四个日志文件
create 新建一个空日志文件
dateext 以日期作为后罪名
#compress 旧日志是否被压缩,默认不压缩
#大括号中的设置可以取代默认设置生效:
/var/log/wtmp { --指定日志文件
monthly --每月轮替
create 0664 root utmp --权限0644,所有者root,所属组utmp
minsize 1M --大于1M才会轮替
rotate 1 --保留一个旧日志文件
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
/usr/local/apache2/logs/access_log {
daily
create
rotate 30
}
目录下的文件:
[root@Darren logrotate.d]# ll /etc/logrotate.d/
-rw-rw-r-- 1 root root 135 1月 18 2016 ConsoleKit
-rw-r--r-- 1 root root 71 5月 11 2016 cups
-rw-r--r-- 1 root root 139 5月 12 2016 dracut
-rw-r--r-- 1 root root 185 7月 12 19:00 httpd
-rw-r--r-- 1 root root 329 7月 17 2012 psacct
-rw-r--r-- 1 root root 210 12月 10 2014 syslog
-rw-r--r-- 1 root root 87 7月 13 00:45 yum
[root@Darren logrotate.d]# cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
(2)logrotate命令
-v 显示轮替运行过程
-f 强制轮替
[root@Darren /]# logrotate -v /etc/logrotate.conf --显示轮替过程
[root@Darren /]# logrotate -vf /etc/logrotate.conf --强制轮替
#查看日志发生了什么变化:
[root@Darren log]# ls
anaconda.ifcfg.log btmp-20161115 dmesg.old maillog-20161114 samba spooler-20161115
anaconda.log cluster dracut.log maillog-20161115 secure tallylog
anaconda.program.log ConsoleKit dracut.log-20160920.gz messages secure-20161101 wtmp
anaconda.storage.log cron dracut.log-20161114 messages-20161101 secure-20161107 wtmp-20161115
anaconda.syslog cron-20161101 httpd messages-20161107 secure-20161114 yum.log
anaconda.xlog cron-20161107 lastlog messages-20161114 secure-20161115 yum.log-20160920
anaconda.yum.log cron-20161114 mail messages-20161115 spooler yum.log-20161114
audit cron-20161115 maillog ntpstats spooler-20161101
boot.log cups maillog-20161101 prelink spooler-20161107
btmp dmesg maillog-20161107 sa spooler-20161114
可以发现这五种日志
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
原本是每周进行一次轮替,但是强制轮替后,及时生效。