Я нахожусь в процессе настройки (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 перечитать файл конфигурации.