我正在考虑构建一个系统日志中继,以便从客户端强制执行的 UDP 流转移到 TCP。具体来说,我希望从
client --UDP_PORT_999--> server1
到
client --UDP_PORT_999--> server1 --TCP_PORT_514--> server2
我在 rssylog 文档中找到了如何设置远程(客户端和服务器)系统日志以及如何正确配置故障转移(在 server2 不可用的情况下)但我不知道如何翻译“仅将来自远程客户端的消息转发到 server2“(或者,“仅将来自端口 UDP 999 的消息转发到服务器 2“)。换句话说,我希望在 server1 上保留本地系统日志处理,并简单地将通过 UDP 传入的消息代理为通过 TCP 传出的消息。
我对 rsyslog 并没有很深的依赖,所以如果有在 syslog-ng 上设置它的好方法(包括故障转移),那也将是完美的。
谢谢您的指点!
沃杰
附言:我将这个问题发布在了 rsyslog 论坛上,后来才意识到最好在这里发布我的问题 :)
编辑:日志将是一个更好的解决方案(请参阅下面的答案和我的评论)
答案1
我也可以推荐你日志因为它的配置允许您更自然地定义上面指定的流程。
配置骨架:
<Input udpin>
Module im_udp
...
</Input>
<Output tcpout>
Module om_tcp
...
</Output>
<Route forwarder>
Path udpin => tcpout
</Route>
答案2
/etc/rsyslog.conf
我找到了一种合理的方法来实现此目的,即在 server1 上添加以下配置行:
:fromhost-ip, !isequal, "127.0.0.1" @@server2
(rsyslog 文档指出$fromhost-ip
=127.0.01 用于本地消息)
该配置有效,经测试,远程系统日志。