公司最近不断地增加服务器,但大量的日志查看起来又非常不方便,通过一些专用的日志查看工具(multitail、System Log Viewer、swatch等)是方便不少,但一台一台的查看也很烦啊。针对这一点,我们现在就来把多个主机的系统日志集中收集到一个主机上来管理,即Linux上的中央系统日志服务器。一般意义上的日志服务器是指,S/C模式下用于专门存放系统日志或者程序日志的服务器。
之前也有用过cacti的syslog插件来监控服务器的日志,但cacti主要是用来监控系统状态和服务的,大量的日志不断地传送到cacti服务器上,一旦弄不好cacti服务器就挂掉了,所以最好的办法就是将日志监控和cacti分开,这样就不会影响到cacti的正常监控了。
一、Linux系统日志简介
在Linux系统中,服务器会产生大量的日志,根据一般的日志的分类,可以把日志分为以下三种:
连接时间日志--由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
进程统计--由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志--由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过它来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。
既然日志那么重要,所以保存日志也就显的格外重要,这就要回到我们本文的开头,日志服务器,单纯的讲,系统只会把日志存放在本地,但是当一个系统工程师管理十台甚至上百台的服务器时,如果他需要查看日志,那么他就需要一台一台服务器的登录查看,这样显然是效率最低下的,所以,我们把所有的服务器的日志都发送到一台服务器上去,那么就可以节省很多不必要的登录和重复操作。
二、下一代系统日志工具syslog-ng介绍
Syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件。syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点。
比较 syslog ,syslog-ng 具有众多高级的功能:更好的网络支持,更加方便的配置,集中式的网络日志存储,并且更具有弹性。比如,使用syslogd时,所有的iptables日志与其他内核日志一起全部存储到了kern.log文件里。Syslog-ng则可以让你有选择性的将iptables部分分出到另外的日志文件中。Syslogd仅能使用UDP协议,Syslog-ng 可以使用UDP和TCP协议。所以你可以在加密的网络隧道中传输日志到集中日志服务器。
syslog-ng的一个设计原则就是建立更好的消息过滤粒度,syslog-ng能够进行基于内容和优先权/facility的过滤。另一个设计原则是更容易进行不同防火墙网段的信息转发,它支持主机链,即使日志消息经过了许多计算机的转发,也可以找出原发主机地址和整个转发链。最后的一个设计原则就是尽量使配置文件强大和简洁。