Rsyslog – Relay Only Remotely Received Messages

rsyslog

I am looking at building a syslog relay in order to move from my clients'-enforced UDP stream to TCP. Specifically, I would like to move from

client --UDP_PORT_999--> server1

to

client --UDP_PORT_999--> server1 --TCP_PORT_514--> server2

I found in the rssylog documentation both how to setup remote (client and server) syslog and how to correctly configure failover (in case where server2 is not available) but I do not know how to translate "forward to server2 only messages coming from a remote client" (or, alternatively, "forward to server2 only messages coming on port UDP 999"). In other words I would like to keep local syslog processing on server1 and simply proxy what comes in via UDP to outgoing messages via TCP.

I am not religiously attached to rsyslog so if there is a good way to set this up (including failover) on syslog-ng it would be perfect as well.

Thank you for any pointers!

WoJ

PS. I posted the question on the rsyslog forum just to realize afterwards that I will be probably better off posting my question here 🙂

EDIT: nxlog will be a better solution (see answer below & my comment)

Best Answer

I can also recommend you nxlog as its configuration allows you to more naturally define the flow what you specified above.

Config skeleton:

<Input udpin>
 Module im_udp
 ...
</Input>

<Output tcpout>
 Module om_tcp
 ...
</Output>

<Route forwarder>
 Path udpin => tcpout
</Route>
Related Topic