日志服务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


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