采用freebsd系统建立集中的syslog服务器

在我们日常工作中,经常要把路由器、交换机的日志或者是防火墙的地址翻译日志保存到远端的主机上。Windows平台下有一些商业软件可以实现建立集中的syslog服务器的功能,但是由于windows自身的稳定性以及这些商业软件的成熟度问题,性能及可靠性都存在一定的缺陷,应用并不是很广泛。采用freebsd来建立集中的syslog服务器不仅可以享受freebsd平台卓越的网络性能和优秀的可靠性,而且可以充分利用UNIX平台下强大的命令行工具以及shell程序脚本功能。最后,所有这一些都是免费的!

 

一、安装freebsd系统

这部分网上有大量的参考资料,而且freebsd的安装界面还算比较友好,就不详细说明了。需要说明的是安装过程中需要选择安装ports collection。

 

二、安装minirsyslogd

在root帐号下

cd  /usr/ports/sysutils/minirsyslogd

make

make install

make clean

安装脚本的提示可以看到minirsyslogd被安装到了

/usr/local/sbin/ minirsyslogd

可以使用man minirsyslogd来查看该程序的说明,写得非常详细,在此感谢一下程序作者。

 

三、配置minirsyslogd

在root帐号下建立一个目录作为minirsyslogd保存所有日志的主目录。

例如:mkdir /usr/home/mylog

在该目录下以IP地址为名建立子目录,如果要接收来自192.168.1.1的syslog信息,就在主目录下建立名为192.168.1.1的子目录。

例如:cd /usr/home/mylog

mkdir 192.168.1.1

有几台机器要接收就建几个目录

mkdir 192.168.2.1

mkdir 192.168.3.1

四、运行minirsyslogd

/usr/local/sbin/ minirsyslogd –-daemon –rootdir /usr/home/mylog

minirsyslogd会在每个地址命名的目录下建立日志文件,缺省是每小时生成一个新文件,文件名以IP地址开头,后面跟日期和时间。

 

如果运行过程中需要添加接收的新主机地址,在建立完目录后,需要运行

kill –HUP  <minirsyslogd的进程号>

如果忘记kill –HUP了,程序也会在每小时检查一次主目录下是否有新的目录加入。

 

如果你将生成新日志文件的间隔设为一天而不是一个小时,请确保该文件不要大于2G,否则还是用每小时生成文件比较好(什么,你的系统每小时也大于2G?我倒)。

五、定时运行的脚本

程序作者在man给出的说明中提供了几个例子,这里再提供一点思路:

每天将前一天的日志进行压缩

find /usr/home/mylog -ctime +1d -exec gzip {} \;

将超过90天的日志文件进行删除

find /usr/home/mylog -ctime +90d -exec rm {} \;

这两个任务可以放到crontab中每天凌晨非忙时运行。