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

Использование динамической генерации файла (r) syslog

Я нахожусь в процессе настройки (r) сервера syslog как удаленного сервера, который получает журналы от различных клиентов.

Интересно, есть ли более приятный способ динамически генерировать несколько имен файлов в отличие от создания шаблона для любого объекта .priority, имя файла которого должно создаваться динамически.

$template FILENAME,"/var/log/%fromhost-ip%/syslog.log"
kern.*                          ?FILENAME

кроме того, должен ли я явно указывать службам / демонам использовать TCP, чтобы использовать ведение журнала через TCP с помощью (r) syslogd? Например, когда я отключаю возможность сервера получать пакеты UDP, он прекращает регистрацию чего-либо. Или иначе сказать:

kern.*                           @loghost 

не работает.

Да, шаблоны - это стандартный и рекомендуемый способ создания динамических имен файлов в rsyslog. Они позволяют логически отделить формат имени файла от действия и внести ясную структуру в вашу конфигурацию.

Что касается TCP, Дженни Д уже дал вам правильный ответ. Обратите внимание, что ваши хосты должны поддерживать системный журнал через TCP. Системный журнал изначально был основан на UDP, поэтому в зависимости от того, какие версии демонов системного журнала вы используете на своих хостах, TCP может быть недоступен на некоторых или даже на всех из них. TCP поддерживается как rsyslog, так и syslog-ng.

Для дополнительной справки по rsyslog, RedHat имеет довольно приятный документация.

На странице руководства:

   To  forward  messages to another host via UDP, prepend the hostname
   with the at sign ("@").  To forward it via plain tcp,  prepend  two
   at signs ("@@").

Так что измените строку конфигурации следующим образом:

kern.*                           @@loghost 

и скажите rsyslog перечитать файл конфигурации.