配置linux syslog日志服务器

 

   目前,linux依旧使用syslogd作为日志监控进程,而在主流的linux发行版中依旧使用sysklog这个比较 老的日志服务器套件。从前一篇日志可以看到,对其进行必要的配置能减少很多麻烦,并且可更有效的从系统日志监控到系统的状态。理解并完善一个syslog 的配置,对于系统管理员来说显得尤为重要。


一、配置文件

   以红旗DC Server 5.0为例,默认的日志服务器就是sysklog套件:


引用
# rpm -qa|grep sysklogd
sysklogd-1.4.1-26_EL

其主要的配置文件有两个:


引用
/etc/sysconfig/syslog

这里定义syslog服务启动时可加入的参数。


引用
/etc/syslog.conf

这个是syslog服务的主要配置文件,根据定义的规则导向日志信息。



二、设置主配置文件

/etc/syslog.conf根据如下的格式定义规则:


引用
facility.level action
设备.优先级 动作

facility.level 字段也被称为seletor(选择条件),选择条件和动作之间用空格或tab分割开。


#号开头的是注释,空白行会自动跳过。



1、facility

facility定义日志消息的范围,其可使用的key有:


引用
auth -由 pam_pwdb 报告的认证活动。
authpriv -包括特权信息如用户名在内的认证活动
cron -与 cron 和 at 有关的计划任务信息。
daemon -与 inetd 守护进程有关的后台进程信息。
kern -内核信息,首先通过 klogd 传递。
lpr -与打印服务有关的信息。
mail -与电子邮件有关的信息
mark - syslog内部功能用于生成时间戳
news -来自新闻服务器的信息
syslog -由 syslog 生成的信息
user -由用户程序生成的信息
uucp -由 uucp 生成的信息
local0-local7 -与自定义程序使用
* 通配符代表除了 mark 以外的所有功能

除mark为内部使用外,还有security为一个旧的key定义,等同于auth,已经不再建议使用。



2、level级别

level定义消息的紧急程度。按严重程度由高到低顺序排列为:


引用
emerg -该系统不可用,等同panic
alert -需要立即被修改的条件
crit -阻止某些工具或子系统功能实现的错误条件
err -阻止工具或某些子系统部分功能实现的错误条件,等同error
warning -预警信息,等同warn
notice -具有重要性的普通条件
info -提供信息的消息
debug -不包含函数条件或问题的其他信息
none -没有重要级,通常用于排错
* 所有级别,除了none

其中,panic、error、warn均为旧的标识符,不再建议使用。



在定义level级别的时候,需要注意两点:
引用
1)优先级是由应用程序在编程的时候已经决定的,除非修改源码再编译,否则不能改变消息的优先级;
2)低的优先级包含高优先级,例如,为某个应用程序定义info的日志导向,则涵盖notice、warning、err、crit、alert、emerg等消息。 (除非使用=号定义)


3、selector选择条件

通过小数点符号“.”把facility和level连接在一起则成为selector(选择条件)。


可以使用分号“;”同时定义多个选择条件。也支持三个修饰符:


引用
* - 所有日志信息
= - 等于,即仅包含本优先级的日志信息
! - 不等于,本优先级日志信息除外


4、action动作

由前面选择条件定义的日志信息,可执行下面的动作:


引用
file-指定日志文件的绝对路径
terminal 或 print -发送到串行或并行设备标志符,例如/dev/ttyS2
@host -远程的日志服务器
username -发送信息本机的指定用户信息窗口中,但该用户必须已经登陆到系统中
named pipe -发送到预先使用 mkfifo 命令来创建的 FIFO 文件的绝对路径

※注意,不能通过“|/var/xxx.sh”方式导向日志到其他脚本中处理。

5、举例

例如:


引用
*.info;mail.none;news.none;authpriv.none;cron.none              /var/log/messages
#把除邮件、新闻组、授权信息、计划任务等外的所有通知性消息都写入messages文件中。
mail,news.=info              /var/adm/info
#把邮件、新闻组中仅通知性消息写入info文件,其他信息不写入。
mail.*;mail.!=info           /var/adm/mail
#把邮件的除通知性消息外都写入mail文件中。
mail.=info                   /dev/tty12
#仅把邮件的通知性消息发送到tty12终端设备
*.alert                      root,joey
#如果root和joey用户已经登陆到系统,则把所有紧急信息通知他们
*.*                          @finlandia
#把所有信息都导向到finlandia主机(通过/etc/hosts或dns解析其IP地址)

※注意:每条消息均会经过所有规则的,并不是唯一匹配的。

也 就是说,假设mail.=info信息通过上面范例中定义的规则时,/var/adm/info、/var/adm/mail、/dev/tty12,甚 至finalandia主机都会收到相同的信息。这样看上去比较烦琐,但可以带来的好处就是保证了信息的完整性,可供不同地方进行分析。



6、测试

部分情况下,上述规的实际执行结果和定义的预想结果可能会有出入。这时,可使用logger程序辅助测试:


# logger -p user.notice 'Hello World!'

日志显示:


引用
Nov 12 13:40:04 dc5test root: Hello World!

其表示意思如下:


引用
第一列:日志产生时间
第二列:产生此日志的主机名称
第三列:产生此日志的应用程序或用户名称
第四列:日志信息


7、自定义日志级别

正如前面所说的,应用程序的日志级别是由应用程序所决定的。部分应用程序可通过配置,定义其日志级别。


例如,/etc/ssh/sshd_config文件中就有:


引用
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

把sshd的日志定义在authpriv.info级别。配合syslog.conf中的:


引用
authpriv.*    /var/log/secure

则日志文件被写入/var/log/secure文件中。



◎我们修改为:
引用
SyslogFacility local0

配合在syslog.conf中增加:


引用
local0.*    /var/log/sshd.log

保存后,重新启动sshd或syslog服务,则以后sshd服务的所有日志都会单独的放到sshd.log文件中了。



三、设置服务参数

默认情况下,syslog进程是不能接受其他日志服务器发过来的消息的。而通过修改其启动参数,可实现日志的大集中功能。


修改/etc/sysconfig/syslog文件:


引用
-r : 打开接受外来日志消息的功能,其监控514 UDP端口;
-x : 关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
-m : 修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次“--MARK--”信息;
-h : 默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去。

通过man syslogd可获得更详细的帮助,而具体到实际配置文件为:


引用
SYSLOGD_OPTIONS="-r-x-m 0"

保存后,重启服务即可:


# service syslog restart

此时,客户机只要通过修改syslog.conf,定义动作为

@主机或IP

,即可发送日志信息到本服务器中。


(在构建集中的日志服务器时,请务必配合ntp时间服务,以保证信息的有效性,避免不必要的麻烦)

另外,/etc/sysconfig/syslog配置文件中,还定义有klogd服务的启动参数:


引用
KLOGD_OPTIONS="-x"

详细帮助,请参考man 8 klogd或man klogd。



四、参考
[url]http://www.rhce.com.tw/rhel/syslog/[/url]
[url]http://blog.chinaunix.net/u1/33592/showart_351061.html[/url]
[url]http://server.it168.com/server/2007-10-28/200710281631265_1.shtml[/url]
[url]http://linux.tcpip.com.cn/article/index.php?func=detail&par=3&parentid=2438&start=96&s=0[/url]

 
unix syslog配置
一.syslog 基本介绍
本文作者:zcj  来源:[url]http://www.unixren.com[/url] 本文可以任意转载, 请保留作者和来源
日志文件由系统日志和内核日志监控程序syslogd 与klogd 控制, 在/etc/syslog.conf 文件中配置这两个监控程序默认活动。
日志文件按/etc/syslog.conf 配置文件中的描述进行组织。下图是/etc/syslog.conf 文件的内容:
[root@localhost ~]# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
syslog.conf 行的基本语法是:
[ 消息类型][ 处理方案]
注意:中间的分隔符必须是Tab 字符!
消息类型是由" 消息来源" 和" 紧急程度" 构成,中间用点号连接。例如上图中,news.crit 表示来自news 的“ 关键” 状况。在这里,news 是消息来源,crit 代表关键状况。通配符* 可以代表一切消息来源。
说明:
第一条语句*.info ,将info 级以上(notice,warning,err,crit,alert 与emerg )的所有消息发送到相应日志文件。
日 志文件类别(按重要程度分类)日志文件可以分成八大类,下面按重要性从大到下列出:emerg  emergency ,紧急alert 警报crit  critical ,关键errerror ,错误warning  警告notice 通知info  信息debug  调试
简单列一下消息来源
auth     认证系统,如login 或su ,即询问用户名和口令
cron     系统执行定时任务时发出的信息
daemon    某些系统的守护程序的 syslog ,如由in.ftpd 产生的log
kern     内核的信息
lpr      打印机的信息
mail     处理邮件的守护进程发出的信息
mark     定时发送消息的时标程序
news     新闻组的守护进程的信息
user     本地用户的应用程序的信息
uucp     uucp 子系统的信息
*      表示所有可能的信息来源
处理方案
" 处理方案" 选项可以对日志进行处理。可以把它存入硬盘,转发到另一台机器或显示在管理员的终端上。
处理方案一览:
文件名  写入某个文件,要注意绝对路径。
@ 主机名 转发给另外一台主机的syslogd 程序。
@IP 地址 同上,只是用IP 地址标识而已。
/dev/console 发送到本地机器屏幕上。
* 发送到所有用户的终端上。
| 程序 通过管道转发给某个程序。
例如:
kern.emerg
/dev/console( 一旦发生内核的紧急状况,立刻把信息显示在控制台上)
说明:
如 果想修改syslogd 的记录文件,首先你必须杀掉syslogd 进程,在修改完毕后再启动syslogd 。***者进入系统后通常立刻修改系统日志,因 此作为网管你应该用一台机器专门处理日志信息,其他机器的日志自动转发到它上面,这样日志信息一旦产生就立刻被转移,这样就可以正确记录***者的行为。
将日志文件记录到远程主机 。
说到这远程主机就是我们本文要配置的syslog 服务器。
2.syslog 服务器配置实践步骤
例如: 10.0.0.1 为syslog 服务器     10.0.0.2 为客户机
步骤: 1. 服务端配置
          vi /etc/sysconfig/syslog      
          sysLOGD_OPTIONS = “-r –m 0”   ## -r 意思是接受远程的日志
          重起syslog 服务 /etc/rc.d/init.d/syslog   restart
       2. 客户端配置
          vi /etc/syslog.conf
          在消息去向处添加 @10.0.0.1
          例如:*.info;mail.none;authpriv.none;cron.none @10.0.0.1
          存盘退出重起服务
          /etc/rc.d/init.d/syslog restart
          ( 知识点:直接查看日志尾部:   tail   /var/log/messages 或者tail /var/log/boot 这样就可以看到syslog 重起)
注意:日志服务使用的端口是:514/udp syslog 服务器应该打开这个端口
syslog 日志服务器端不能根据源地址过滤,为了防止外网向日志服务器写垃圾信息要在网络拓扑中解决,网关上做限制外网访问514 端口。
如果服务器比较多的话,这样形成的日志比较大,要做好日志的分析
3. 一些日志工具
chklastlog
[url]ftp://coast.cs.purdue.edu/pub/tools/unix/chklastlog/[/url]
chkwtmp
[url]ftp://coast.cs.purdue.edu/pub/tools/unix/chkwtmp/[/url]
dump_lastlog
[url]ftp://coast.cs.purdue.edu/pub/tools/unix/dump_lastlog.Z[/url]
spar
[url]ftp://coast.cs.purdue.edu/pub/tools/unix/TAMU/[/url]
Swatch
[url]http://www.lomar.org/komar/alek/pres/swatch/cover.html[/url]
Zap
[url]ftp://caost.cs.purdue.edu/pub/tools/unix/zap.tar.gz[/url]
日志分类方法
[url]http://csrc.nist.gov/nissc/1998/proceedings/paperD1.pdf[/url]
有任何问题请到
[url]http://bbs.unixren.com[/url] 

【另】配置Linux日志文件


作者:不详  来源:中国自学编程网整理发布  发布日期:2008-07-12  


不要低 估日志文件对网络的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件,用户可以通过日志文件检查错误产生的原因,或者在受到***、被*** 时追踪***者的踪迹。日志的两个比较重要的作用是审核和监测。配置好的Linux的日志非常强大。对于Linux系统而言,所有的日志文件在/var /log下。默认情况下,Linux的日志文件没有记录FTP的活动。用户可以通过修改/etc/ftpacess让系统记录FTP的一切活动。


/etc/syslog.conf的格式


Linux 系统的日志文件是可以配置的,在前面的章节中已经介绍了如何定制Apache、wu-ftpd、Sendmail的日志文件。Linux系统的日志文件是 由/etc/syslog.conf决定的,用户有必要花时间仔细配置一下/etc/syslog.conf.下面是/etc/syslog.conf的 范例:


  


# Log all kernel messages to the kernlog.


# Logging much else clutters up the screen.


kern.*/var/log/kernlog


# Log anything (except mail) of level info or higher.


# Don't log private authentication messages!


*.info;mail.none;news.none;authpriv.none;cron.none


/var/log/messages


*.warning/var/log/syslog


# The authpriv file has restricted access.


authpriv.*   /var/log/secure


# Log all the mail messages in one place.


mail.*/var/log/maillog


# Log cron stuff


cron.*/var/log/cron


# Everybody gets emergency messages, plus log them on another


# machine.


*.emerg


# Save mail and news errors of level err and higher in a


# special file.


uucp,news.crit/var/log/spooler


# Save boot messages also to boot.log


local7.*/var/log/boot.log


# INN


news.=crit                  /var/log/news/news.crit


news.=err                   /var/log/news/news.err


news.notice                 /var/log/news/news.notice


可以看出,该配置文件的每一行的第一个字段列出要被记录的信息种类,第二个字段则列出被记录的位置。第一个字段使用下面的格式:facility.level[;facility.level…]


此 处的faciity是产生信息的系统应用程序或工具,level则是这个信息的重要程度。level的重要程度由低到高依次是:debug(调试消息)、 info(一般消息)、notice(值得注意的消息)、warning(警告)、err(一般性错误)、crit(严重错误)、alert(或 emerg,紧急情况)。


facility包含有:auth(认证系统,如login或su,即询问用户名和口令)、cron(系统执行定时任务 时发出的信息)、daemon(某些系统的守护程序的syslog,如由in.ftpd产生的log)、kern(内核的信息)、lpr(打印机的信 息)、mail(处理邮件的守护进程发出的信息)、mark(定时发送消息的时标程序)、news(新闻组的守护进程的信息)、user(本地用户的应用 程序的信息)、uucp(uucp子系统的信息)和“*”(表示所有可能的facility)。


将日志文件记录到远程主机


如果有另一个 Linux或UNIX系统,那么可以配置日志文件,让其把消息发到另外一个系统并记录下来。这也是为什么上面的所有日志文件都记录了主机名的原因。要实现 这个功能,在该配置文件中,指定一个记录动作,后面接一个由“@”开头的远程系统的主机名,如下 例:*.warn;authpriv.notice;auth.notice @bright.hacker.com.cn


同时,还要将接受消息 的目的系统设置为允许这种操作。此例主机bright.hacker.com.cn的syslogd守护进程要用-r参数启动。如果不使用-r参数,则目 标主机的syslogd将丢弃这个消息以避免DoS***使硬盘塞满虚假消息。并且确保目标主机的/etc/service文件必须设置syslog服务所 使用的UDP端口514(这也是RedHat Linux默认的设置)。如果syslogd守护进程用了-r和-h参数,那么,参数-h将允许转发消息。也就是说,如果系统B的syslogd用了-h 参数,这样,当系统A把消息转发到系统B后,系统B就把来自系统A和它自己的消息转发到系统C.


将警告信息发送到控制台


syslogd可以将任何从内核发出的重要程度为emerg或alert的信息发送到控制台。控制台是指虚拟控制台或启动时加-C参数的xterm.要实现这一功能,在/etc/syslog.conf文件中加上下面一行:kern.emerg /dev/console


这 样,当系统内核发生错误而发出消息时,用户能够马上知道并且进行处理。如果用了“*”,就是一旦内核发生错误,就将消息发送给所有在线用户,但只有这个用 户正在登录的时候才能看到。修改了/etc/syslog.conf文件后,必须重新启动syslogd守护进程以使配置更改生效,请执行下面的命令:# /etc/rc.d/init.d/syslog restart