在我们日常工作中,经常要把路由器、交换机的日志或者是防火墙的地址翻译日志保存到远端的主机上。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中每天凌晨非忙时运行。