我对 syslog-ng 有一些问题,我配置了一个从不同远程设备接收日志的服务器。
我的 syslog-ng 守护进程配置为在基于文件的管道中交换日志,不同的进程将刷新该管道(在 mysql 服务器中插入数据)。
有时(每周或每月随机一次) syslog-ng 会发疯并递归记录,不到一分钟就填满我的磁盘。
日志: 正常日志:
INSERT INTO db.table (data,time,msg) VALUES ('2011-12-05','09:27','administrator logged in');
当 syslog-ng 出现问题时:
INSERT INTO db.table (data,time,msg) VALUES ('2011-12-05','09:27','INSERT like INSERT INTO db.table (data,time,msg) VALUES ('2011-12-05','09:27','...');');
并且它继续以递归方式发送相同的日志,并将查询发布在 msg 字段中。
Syslog-ng 套接字绑定在由 RSA 证书锁定的 VPN 网络上,并且远程服务器也将其日志发送到另一台服务器,这没有任何问题(所以我认为不太可能发生恶意攻击或疯狂的远程服务器向 syslog-ng 发送垃圾邮件日志)。
我的服务器上运行的是 CentOS 5.6 和 syslog-ng v2.1.4
我的 syslog-ng 目标规则:
destination file_sql {file("/var/syslog-ng-pipe" template("INSERT INTO logs (host, date, time, msg) VALUES ( '$HOST', '$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$MSG');\n")suppress(2));