Я пытался настроить rsyslog для пересылки / var / log / syslog на удаленный сервер. Я смог сделать это, используя конфигурацию ниже.
$InputFileName /var/log/secure
$InputFileTag hostname-secure
$InputFileStateFile hostname-secure
$InputFileSeverity info
$InputRunFileMonitor
*.* @address:514
Это перенаправляет / var / log / secure, но на самом деле я получаю два журнала на удаленном сервере. Один тег помечен локальным хостом, а другой - именем хоста компьютера, который использует указанный выше тег FileTag.
Что мне нужно добавить или удалить, чтобы пересылать этот файл журнала на удаленный компьютер с неповрежденными FQDN и FileTag, не включая вторую копию с localhost?
Он появляется дважды, потому что вы отправляете его дважды.
"*. * @Address: 514" отправляет все что этот системный журнал (клиент) получает в качестве входных данных, что означает оба обычных журнала, полученных подсистемой системного журнала (т.е. прочитанные из / dev / log), и путем чтения / var / log / secure после того, как он был записан самим syslog.
Что вы, вероятно, захотите сделать, это добавить: $ InputFileFacility local0 (или какое-либо другое локально неиспользуемое средство localX), а затем изменить:
*. * @ адрес: 514
на local0. * @ адрес: 514
Затем это гарантирует, что вы перенаправляете только строки журнала @address, которые читаются из / var / log / secure, с дополнительным тегом, который вы хотите (при условии, что тег является важной вещью, которую вы действительно хотите видеть на удаленном сервере системного журнала. )
Если дополнительный тег не важен, вам просто не нужны директивы InputFile *, а нужна только пересылка (*. * @Address: 514). Если вы хотите быть избирательным, замените *. * Только журналами, которые вы хотите пересылать.