从rsyslog转发到TCP上的syslog-ng不起作用(尽pipe数据包到达服务器)

我们在中央系统日志服务器上使用syslog-ng(CentOS 5.9上的syslog-ng-2.1.4-9.el5)。 我们很高兴地使用syslogd和rsyslog从Linux和Solaris主机上通过UDP的混合发送日志,直到昨天终于明白我们正在失去大量的条目(是的,我应该注意到所有的警告)。

我试图改变使用TCP。 我很想(现在)坚持syslog-ng在中心和rsyslog发件人,我的理解是,这应该工作。 中央系统日志服务器有多个虚拟接口,用于按function分割日志集(这就是udp()和tcp()语句指定要绑定的IP地址的原因)。

我在syslog-ng一端启用了TCP侦听器(请参阅下面的configuration文件中提取的内容)–netstat -l显示端口514上的侦听器。作为testing,我在一台主机上更改了转发子句(CentOS 6.4 with rsyslog-5.8.10-6 .el6.x86_64)从@unixlog到@@ unixlog。 我看到数据包到达中央服务器并返回数据包(在unixlog上查看tcpdump),所以我认为我已经消除了iptables的问题,但输出文件中没有任何内容。 我只是试着关掉iptables一段时间来检查这个 – 同样的事情。

我还没有试过打开syslog-ng的debugging,因为这是一个繁忙的服务器 – 我的下一步可能是build立一个testingsyslog-ng服务器,并指向一个单一的主机。 在我这样做之前还有什么我应该看的? 我是否需要更改转发邮件的格式? 我对Syslog-ng 2.x文档的阅读表明,这应该没有任何改变。 我已经尝试更改rsyslog调用的兼容级别选项。 最初设置为5,我已经尝试了0 .. 4,并完全删除参数 – 行为没有差异。

Rsyslog.conf在发件人(注释和本地文件被删除)…

$ModLoad imuxsock $ModLoad imklog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat *.err;kern.debug;daemon.notice;mail.crit @unixlog.ncl.ac.uk local3.debug @cmdloghost.ncl.ac.uk 

从unixlog上的rsyslog.conf中解压缩

 options { long_hostnames(off); sync(0); create_dirs(yes); }; destination d_syslog { file("/var/log/incoming/syslogs/$HOST/syslog.$YEAR$MONTH$DAY.log"); }; # unixlog is 10.8.232.202 source unixlog_net { udp(ip(10.8.232.202)); tcp(ip(10.8.232.202)); }; log { source(unixlog_net); destination(d_syslog); }; 

问题是tcpwrappers,一旦我设置了一个testingsyslog-ng实例,并且打开了debugging输出,运行它就显而易见了。 将以下子句添加到/etc/hosts.allow中,这个技巧

 syslog-ng: 10.0.0.0/255.0.0.0 

也意识到我们没有处理syslog-ng的内部消息(这可能告诉我们问题是什么)。 现在已经添加了以下行来做到这一点…

 # Deal with syslog-ng's own messages source s_internal { internal(); }; destination d_internal {file("/var/log/syslog-ng.log"); }; log { source(s_internal); destination(d_internal); };