感谢支持
我们一直在努力

利用 Ubuntu 中 syslog 记录外部设备日志

要求:


利用 Ubuntu 8.04 服务器版的 syslog 记录 juniper isg1000 日志,保留3个月。


1、允许 syslog 记录外部日志


修改 /etc/default/syslogd,把其中的 SYSLOGD=”” 改为 SYSLOGD=”-r”


2、定义外部日志类型


修改 juniper isg1000 日志定义,让其生成的日志定义为 local7,并向 Ubuntu 服务器发送日志。


3、定义日志文件


考虑到日志文件比较多,在 /var/log 下新建 firewall 目录,用于保存日志文件。目录属性 755。


修改 /etc/syslog.conf,在其中增加下面一行:


local7.*


-/var/log/firewall/firewall.log


经过测试记录不成问题,但发现有下面几个严重问题。


4、重复记录问题


syslog 不光在 firewall.log 中记录,还在 /var/log 中的 syslog 和 messages 记录,由于日志很大,这下麻烦了。看看 syslog.conf 的 man,居然还有个 ! 功能,在 syslog.conf 文件中的 syslog 和 messages 定义前面加上了 !local7.*,感觉不错,syslog 不再向 syslog 和 messages 文件中记录设备日志了。


5、文件超大问题


syslog 记录的日志文件最大不超过2.5G,如果超过了,将停止记录。而 isg1000 4个小时左右的日志就达到这个数量了。必须设置日志轮转。在 /etc/logrotate.d 中新建 firewall 日志轮转控制文件,属性644,firewall 内如如下:


/var/log/firewall/firewall.log {


start 1000


rotate 512


maxage 100


size 1500M


compress


delaycompress


missingok


postrotate


/usr/bin/killall -HUP syslogd


endscript


}


以上内容简单解释:


由于日志文件需要保存3个月,且平均每天生成5个日志文件,设置最多保留512个,保留时间100天。


文件后缀编号从1000开始,比从1开始在排序上要好看。


文件超过1500M的时候轮转。


为了减少存储空间占用,轮转后的日志文件需要压缩,但不是轮转后马上压缩,而是轮转下一个的时候,再压缩,以防 syslog 继续写入当前文件时候丢失数据。


经过以上设置,感觉可以,谁知道使用几天,发现还有问题。

6、再次解决文件超大问题


firewall.log 文件依然是2G多,没有按照设定达到1500M的时候轮转,究竟为什么?仔细看 man logrotate ,呵呵,原来如此,logrotate 每天运行一次,等它运行的时候,firewall.log 早就达到2G了。怎么办,让它每小时运行一次试试看,把 /etc/cron.daily/logtotate 文件拷贝到 /etc/cron.hourly 中一份。效果不错,看来问题解决了。


7、解决日志文件不到1500M就轮转、且日志文件名没有按定义规则生成问题


经过若干天运行,发现个小小问题。若干文件不到设置的1500M就轮转了,而且文件名没有按定义方式生成,而是原始的 firewall.log.0 方式,但是它们都有共性,都是早上 6:47 生成的。让我想想,肯定是 cron 中 sysklogd 脚本搞的鬼。进入 /etc 中的各个 cron 子目录中,把下面这句或者类似的


logs=$(syslogd-listfiles)


加上 -s firewall.log 参数,改为


logs=$(syslogd-listfiles -s firewall.log)


让日志服务不再处理 firewall.log 日志。


8、解决其它问题


暂时没有。

赞(0) 打赏
转载请注明出处:服务器评测 » 利用 Ubuntu 中 syslog 记录外部设备日志
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏