当前位置: > Linux服务器 > 监控工具 >

Linux日志服务介绍和日志服务器配置

时间:2014-10-26 00:16来源:www.it.net.cn 作者:it
Linux系统中的大部分日志都是由syslog日志服务驱动和管理的。
1.配置文件
syslog服务由两个重要的配置文件控制管理,分别是/etc/syslog.conf主配置文件和/etc/sysconfig/syslog辅助配置文件, /etc/init.d/syslog是启动脚本,我们主要介绍主配置文件/etc/syslog.conf。
/etc/syslog.conf 语句结构:
[root@xhot ~]# grep -v "#" /etc/syslog.conf //列出非#打头的每一行
复制代码代码如下:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
 
选择域(消息类型.错误级别) 动作域
2. 消息类型:auth,authpriv,security;cron,daemon,kern,lpr,mail, mark,news,syslog,user,uucp,local0~local7.
错误级别:(8级)debug,info,notice,warning|warn;err|error;crit,alert,emerg|panic
动作域:file,user,console,@remote_ip
举如上的/etc/syslog.conf文件三个例子:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
表示info级别的任何消息都发送到/var/log/messages日志文件,但邮件系统、验证系统和计划任务的错误级别信息就除外,不发送(none表示禁止)
cron.* /var/log/cron 表示所有级别的cron信息发到/var/log/cron文件
*.emerg * 表示emerg错误级别(危险状态)的所有消息类型发给所有用户
Linux日志服务器配置
配置非常简单,只是修改一个文件的一个地方,然后重启服务即可:
[root@xhot ~]# grep -v "#" /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-m 0 -r" //只要在这里添加“-r”就行咯
KLOGD_OPTIONS="-x"
SYSLOG_UMASK=077
[root@xhot ~]# service syslog restart
关闭内核日志记录器: [确定]
关闭系统日志记录器: [确定]
启动系统日志记录器: [确定]
启动内核日志记录器: [确定]
对于发送消息到服务器的OS,只要在写/etc/syslog.conf主配置文件的时候,作用域为@server-ip就行了,比如针对218.192.87.24这台日志服务器,把一台ubuntu系统的所有info级别的auth信息发给日志服务器,那么对于ubuntu系统的/etc/syslog.conf文件最后一行添加 auth.info @218.192.87.24 就OK了

linux日志转储
系统工作到了一定时间后,日志文件的内容随着时间和访问量的增加而越来越多,日志文件也越来越大。而且当日志文件超过系统控制范围时候,还会对系统性能造成影响。转储方式可以设为每年转储、每月转储、每周转储、达到一定大小转储。
在Linux系统,经常使用“logrotate”工具进行日志转储,结合cron计划任务,可以轻松实现日志文件的转储。转储方式的设置由“/etc/logrotate.conf”配置文件控制:
[root@xhot ~]# cat /etc/logrotate.conf
# see "man logrotate" for details //可以查看帮助文档
# rotate log files weekly
weekly //设置每周转储
# keep 4 weeks worth of backlogs
rotate 4 //最多转储4次
# create new (empty) log files after rotating old ones
create //当转储后文件不存储时创建它
# uncomment this if you want your log files compressed
#compress //以压缩方式转储
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d //其他日志文件的转储方式,包含在该目录下
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp { //设置/var/log/wtmp日志文件的转储参数
monthly //每月转储
create 0664 root utmp //转储后文件不存在时创建它,文件所有者为root,
所属组为utmp,对应的权限为0664
rotate 1 //转储一次
}
# system-specific logs may be also be configured here.
举两个例子:
为/var/log/news/目录下的所有文件设置转储参数,每周转储,转储2次,转储时将老的日志文件放到/var/log/news/old目录下,若日志文件不存在,则跳过。完成后重启news新闻组服务,转储时不压缩。那么可以在/etc/logrotate.conf文件的最后添加如下:
复制代码代码如下:
/var/log/news/*{
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP `cat /var/run/inn.pid`
endscript
nocompress
}
另一个例子:为/var/log/httpd/access.log和/var/log/httpd/error.log日志设置转储参数。转储5次,转储时发送邮件给root@localhost用户,当日志文件达到100KB时才转储,转储后重启httpd服务,那么可以直接在/etc/logrotate.conf文件的最后添加如下:
复制代码代码如下:
/var/log/httpd/access.log /var/log/http/error.log{
rotate 5
mail root@localhost
size=100k
sharedscripts
/sbin/killall -HUP httpd
endscript }
自定义日志转储(/etc/logrotate.d/*)
通过下面一个例子将所有类型错误级别为info的日志转储到/var/log/test.log日志文件中,并设置/var/log/test.log达到50KB后进行转储,转储10次,转储时压缩,转储后重启syslog服务:
1、修改/etc/syslog.conf文件使得如下:
[root@xhot ~]# tail -1 /etc/syslog.conf //查看该文件的最后一行
复制代码代码如下:
*.info /var/log/test.log
2、重启syslog服务:
[root@xhot ~]# /sbin/service syslog restart
关闭内核日志记录器: [确定]
关闭系统日志记录器: [确定]
启动系统日志记录器: [确定]
启动内核日志记录器: [确定]
 
3、创建/etc/logrotate.d/test.log日志转储参数配置文件,添加如下:
[root@xhot ~]# vim /etc/logrotate.d/test.log
[root@xhot ~]# cat /etc/logrotate.d/test.log
复制代码代码如下:
/var/log/test.log{
rotate 10
size = 50k
compress
postrotate
killall -HUP syslog
endscript
}
4、查看文件/etc/cron.daily/logrotate确保如下:
[root@xhot ~]# cat /etc/cron.daily/logrotate
复制代码代码如下:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
 
5、查看转储后的文件
[root@xhot log]# pwd
/var/log
[root@xhot log]# ls test.log*
列出所有日志文件
(责任编辑:IT)
------分隔线----------------------------