2

Я пытаюсь настроить Rsyslog со следующей конфигурацией: я слушаю порт 514 для получения данных с разных хостов: 172.16.111.222, 172.16.111.111 и 172.16.222.111. И я хочу хранить эти журналы в разных папках для каждого хоста. Итак, я сделал это конф:

$ModLoad imudp


$Ruleset RemoteConnections
$RulesetCreateMainQueue on
$ActionQueueType LinkedList
$ActionQueueFileName dbremotecons
$ActionResumeRetryCount -1
*.* ~


$InputUDPServerBindRuleset RemoteConnections
$UDPServerRun 514

if $fromhost-ip=='172.16.111.222' then /var/log/prod1/%FROMHOST-IP%/%syslogfacility-text%.log
& ~
if $fromhost-ip=='172.16.111.111' then /var/log/prod1/%FROMHOST-IP%/%syslogfacility-text%.log
& ~

if $fromhost-ip=='172.16.222.111' then /var/log/product2/%FROMHOST-IP%/%syslogfacility-text%.log
& ~

К сожалению, это не работает, rsyslog ничего не регистрирует. Я не уверен, что означает "& ~", я нашел это в интернете.

Какие-нибудь идеи, чтобы заставить это работать?

2 ответа2

2

Вы не можете использовать заполнители непосредственно в правилах. Используйте шаблоны вместо. Следующее должно работать:

$template DynaFile,"/var/log/%FROMHOST-IP%/%syslogfacility-text%.log"
*.* -?DynaFile

Или, чтобы быть ближе к вашему коду:

$template prod1,"/var/log/prod1/%FROMHOST-IP%/%syslogfacility-text%.log"
$template prod2,"/var/log/prod2/%FROMHOST-IP%/%syslogfacility-text%.log"
if $fromhost-ip=='172.16.111.111' then ?prod1
if $fromhost-ip=='172.16.111.222' then ?prod1
if $fromhost-ip=='172.16.222.111' then ?prod2
0

«~» означает сброс или остановку, что является « действием » rsyslog.

Так:

if $fromhost-ip=='172.16.111.222' then /var/log/prod1/%FROMHOST-IP%/%syslogfacility-text%.log
& ~

означает, что если оператор «if ... then ...» работает, то есть выполняется условие, и сообщение заносится в файл, то остановка - дальнейшие действия не выполняются.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .