Я собираюсь создать реле syslog, чтобы перейти от принудительного потока UDP моих клиентов к TCP. В частности, я хотел бы перейти от
client --UDP_PORT_999--> server1
к
client --UDP_PORT_999--> server1 --TCP_PORT_514--> server2
Я нашел в документации rssylog как как настроить удаленный (клиентский и серверный) системный журнал и как правильно настроить аварийное переключение (в случае, если server2 недоступен), но я не знаю, как перевести "пересылать на server2 только сообщения, поступающие от удаленного клиента"(или, альтернативно,"пересылать на server2 только сообщения, приходящие на порт UDP 999"). Другими словами, я хотел бы сохранить локальную обработку системного журнала на server1 и просто проксировать то, что приходит через UDP, на исходящие сообщения через TCP.
Я не религиозно привязан к rsyslog, поэтому, если есть хороший способ настроить это (включая аварийное переключение) на syslog-ng, это тоже будет идеально.
Спасибо за любые указатели!
WoJ
PS. Я разместил вопрос на форуме rsyslog, чтобы потом понять, что, вероятно, мне будет лучше разместить свой вопрос здесь :)
РЕДАКТИРОВАТЬ: nxlog будет лучшим решением (см. ответ ниже и мой комментарий)
Я также могу порекомендовать вам nxlog поскольку его конфигурация позволяет более естественно определять поток, который вы указали выше.
Скелет конфигурации:
<Input udpin>
Module im_udp
...
</Input>
<Output tcpout>
Module om_tcp
...
</Output>
<Route forwarder>
Path udpin => tcpout
</Route>
Я нашел разумный способ добиться этого, добавив следующую строку конфигурации в /etc/rsyslog.conf
на server1:
:fromhost-ip, !isequal, "127.0.0.1" @@server2
(документация rsyslog утверждает, что $fromhost-ip
= 127.0.01 для локальных сообщений)
Конфигурация работает, как и проверено с отличным удаленный системный журнал.