Назад | Перейти на главную страницу

rsyslog - ретрансляция только удаленно полученных сообщений (отредактируйте: nxlog будет лучше)

Я собираюсь создать реле 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 для локальных сообщений)

Конфигурация работает, как и проверено с отличным удаленный системный журнал.