要求:
/ i* d9 H$ }: N. v. D7 E2 L 利用 ubuntu 8.04 服务器版的 syslog 记录 juniper isg1000 日志,保留3个月。
9 N4 h+ p1 P% u2 ]( V( s0 r 1、允许 syslog 记录外部日志
! S3 r' J' S2 h 修改 /etc/default/syslogd,把其中的 SYSLOGD="" 改为 SYSLOGD="-r"
+ g* Y L0 _( c0 b" ~: }( M2 I 2、定义外部日志类型
& d' v3 C; H9 p. k 修改 juniper isg1000 日志定义,让其生成的日志定义为 local7,并向 ubuntu 服务器发送日志。
4 C) Q: I7 M: u 3、定义日志文件
& h6 _2 \+ x2 D! ~) a 考虑到日志文件比较多,在 /var/log 下新建 firewall 目录,用于保存日志文件。目录属性 755。
4 v) t* _0 x& Q) N& p8 _ 修改 /etc/syslog.conf,在其中增加下面一行: h( O. f( ^0 L: K) t1 a- x' v
local7.*2 e, b9 e. K q% l: W/ M# g
-/var/log/firewall/firewall.log
! u' _# z, J! {+ C" _ 经过测试记录不成问题,但发现有下面几个严重问题。- n5 b# j1 }& D$ W; h$ s
4、重复记录问题7 |+ j" B/ G* |2 n" f& M7 C
syslog 不光在 firewall.log 中记录,还在 /var/log 中的 syslog 和 messages 记录,由于日志很大,这下麻烦了。看看 syslog.conf 的 man,居然还有个 ! 功能,在 syslog.conf 文件中的 syslog 和 messages 定义前面加上了 !local7.*,感觉不错,syslog 不再向 syslog 和 messages 文件中记录设备日志了。6 _' N! j5 z. j5 i, L' x
5、文件超大问题8 f* t0 c5 [% s1 K8 p
syslog 记录的日志文件最大不超过2.5G,如果超过了,将停止记录。而 isg1000 4个小时左右的日志就达到这个数量了。必须设置日志轮转。在 /etc/logrotate.d 中新建 firewall 日志轮转控制文件,属性644,firewall 内如如下:6 t8 B6 ]+ F2 T$ T( c. p
/var/log/firewall/firewall.log {
+ |; x$ S8 f8 k9 ?( f start 1000) Z( i# H7 D. L5 c. i8 T2 A
rotate 512( z, x1 g: S( W1 ?+ M: n4 K: n5 k
maxage 100* u3 U$ U. ~2 b2 \( ~9 C
size 1500M
Y+ e$ @5 K% Z( o8 u compress. l; Z% p% ~% x/ S+ u2 I
delaycompress& `7 t1 H4 F B) u! k
missingok
6 ^$ r- v# B2 \ postrotate& ~7 y# i- {7 @# E7 q2 H7 w
/usr/bin/killall -HUP syslogd
2 k7 R+ R5 p4 P endscript) l+ l2 g) o) {8 V; M. G( s( z F
} |