日志服务rsyslog
系统日志服务,可以接受本地的很多中其他软件产生日志、甚至其他机器传输过来的日志,并且把日志进行分类分级存储起来。
rsyslog通过“设备facility”的概念来对日志进行分类,不同的分类保存到不同名字的日志中
auth用户身份和密码认证
authpriv与auth很类似,接近授权。
cron计划任务
daemon一些守护进程产生的日志
kern内核产生的日志
lpr打印服务产生的日志
mail邮件产生的日志
markrsyslog内部产生时间标记的日志
news新闻服务
syslogrsyslog自身产生的日志
user
uucpuucp服务产生的日志
local0 through local7.自定义随意便是8个设备。
日志级别:从上往下,级别越高,但记录的东西越少
debug调试级别,记录的日志是最详细的
info默认级别,能记录大部分常见的日志
notice仅仅记录值得注意的日志
warning记录警告日志
err记录错误日志,一般小错误,不影响程序继续使用
crit记录重大错误日志,大错误,一般会导致程序某个功能不能正常使用
alert记录严重错误日志 ,直接导致整个程序不能使用
emerg内核崩溃,死机级别日志
sshd --产生很多日志 ---> rsyslog:authpriv ---> 仅仅把warning已经wanging以上级别的信息记录
使用rsyslog服务:
安装rsyslog软件
保证rsyslog服务启动
配置文件/etc/rsyslog.conf <--控制日志如何记录
/etc/sysconfig/rsyslog <---决定关闭或者开启某些功能
# vim /etc/rsyslog.conf
设备.级别动作
cron.* /var/log/cron
authpriv.* /var/log/secure
*.info;mail.none;authpriv.none;cron.none /var/log/messages
mail.* -/var/log/maillog
local0.*/var/log/mylog
local1.info@192.168.29.1
例子: 把sshd的所有登录日志的日志都记录到指定日志文件中
1、sshd服务本身可以设定日志的选项
# vim /etc/ssh/sshd_config
SyslogFacility LOCAL6 《---把这里修改
如果sshd不是托管给xinetd的话,就得重启服务sshd
2、
# vim /etc/rsyslog.conf
local6.* /var/log/mysshd.log
# service rsyslog restart
例子2:更改日志的格式
# vim /etc/rsyslog.conf
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat <---把原来的日志格式注释掉
$template uplformat, "%$NOW% %TIMESTAMP:8:15% %HOSTNAME% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate uplformat
# service rsyslog restart
测试
# logger -t "testing" "can you see me ?"
查看/var/log/messages日志文件是否更改了格式
例子3:发送日志到远程的日志服务器
应用服务器 ----日志发送到----> 日志服务器
应用服务器:
app1.upl.com10.1.1.218
日志服务器
www.upl.com10.1.1.21
一、配置日志服务器
暂停清空防火墙的规则:
# iptables -F
# service iptables stop
# vim /etc/rsyslog.conf
$ModLoad imtcp.so<---加载tcp的日志接受模块
$InputTCPServerRun 514<---监听514端口
$template DynFile,"/var/log/system-%HOSTNAME%.log"
:rawmsg, contains, "app1" ?DynFile
:rawmsg, contains, "app1" ~ 《--- ~ 上面的规则已经匹配了如何记录日志,然后后面还有规则匹配都不会再记录该日志。
:rawmsg, contains, "app2" ?DynFile
:rawmsg, contains, "app2" ~
# service rsyslog restart
二、应用服务器
# vim /etc/rsyslog.conf
*.* @@10.1.1.21 <--- 把所有设备产生的所有级别的日志都以tcp(@@, udp@)发送到10.1.1.21的日志服务器上
# service rsyslog restart
测试
在日志服务器上:
# tailf /var/log/system-app1.log
在应用服务器上:
# logger -t "test" "I am app1"
常见的日志
/var/log/messages很多软件和服务都会把日志记录到该文件
/var/log/secure安全相关
/var/log/lastlog使用lastlog命令查看的日志文件,记录系统所有的帐号的最后一次登录时间,主要关心哪些帐号不应该登录的,却发生了登录。
/var/log/btmp使用lastb命令查看,记录所有登录失败的事件
/var/log/wtmp使用last命令查看,记录登录成功的事件
/var/log/boot.log记录开机系统启动的信息,主要是软件层面的启动信息,用于排查系统启动时候的各种故障,该文件每次启动都会被覆盖
/var/log/dmesg记录开机的时候内核加载和驱动加载的信息,每次都会被覆盖的。dmesg.old保留了上一次的信息
/var/log/maillog邮件服务的日志。
日志轮换
logrotate是系统自带的一个日志轮换的工具,它通过计划任务每天对满足条件日志文件进行轮换。
主配置文件
# vim /etc/logrotate.conf
weekly
rotate 4 会有四个旧的日志文件备份,还有另外一个当前正在使用的
create
dateext
include /etc/logrotate.d 包含子配置文件
/var/log/uplooking.log {
size 10M<---日志文件大于10M就会被轮换
create 0600 root daemon
rotate 3
}
# vim /etc/logrotate.d/syslog
。。。。。
编写好配置文件,想测试效果,可以手工执行以下命令,触发轮换工具执行,否则,该工具只会每天执行一次。
# logrotate /etc/logrotate.conf
# dd if=/dev/zero of=/var/log/uplooking.log bs=1M count=11
# logrotate /etc/logrotate.conf 《---由于日志文件已经大于10M了,所以会被论坛
# ls -lh /var/log/uplooking.log*
-rw-------. 1 root daemon 0 5月 5 16:17 /var/log/uplooking.log
-rw-------. 1 root daemon 11M 5月 5 16:16 /var/log/uplooking.log-20130505
================================================================================