Запретить rsyslog регистрировать сообщения удаленных хостов в локальном / var / log / syslog

8

Я использую rsyslog для сохранения журналов с удаленных хостов на сервер следующим образом:

Сервер:

# Logfile for each host
$template DynaFile,"/var/log/rsyslog/%HOSTNAME%.log"
*.* -?DynaFile

Клиенты:

*.* @servername

Это создает файлы журнала для каждого клиентского хоста на серверах, /var/log/rsyslog/но также регистрирует каждое сообщение на серверах /var/log/syslog. Так что это действительно раздутый. Как я могу предотвратить это, чтобы он /var/log/syslogсодержал только сообщения с самого сервера?

Майкл
источник
1
Вы захотите изучить фильтры на основе свойств, поскольку HOSTNAME является одним из полей системного журнала. Вы, в основном, захотите изменить его так, чтобы он выбирал только свои собственные журналы для/var/log/syslog
Bratchley

Ответы:

2

Вот что работает для меня:

## For accepting syslog info from remote hosts
$template TempAuth, "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"
$template TempMsg,  "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"

if ($fromhost-ip != "127.0.0.1" ) then ?TempAuth
& ~
if ($fromhost-ip != "127.0.0.1" ) then  ?TempMsg
& ~
гость
источник
Почему дублирование между TempAuth и TempMsg?
vdboor
0

Я много работал над этим и думаю, что нашел решение. Я призываю других попробовать это и искать потенциально неблагоприятные последствия. Я предлагаю, чтобы это было реализовано на лабораторных / тестовых и некритических машинах в первую очередь

$template PerHostLog,"/var/log/net-hosts/%fromhost-ip%/%fromhost-ip%.log"
$template RemoteHostFileFormat,"%TIMESTAMP% %fromhost-ip% %syslogfacility-text% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::space-cc,drop-last-lf%\n”
:inputname, isequal, "imudp" ?PerHostLog;RemoteHostFileFormat
:fromhost-ip , !isequal , "127.0.0.1" stop

Вышеуказанные 4 строки находятся в самом верхнем разделе моего файла /etc/rsyslog.conf

В настоящее время я наблюдаю 2 файла журнала:
/var/log/net-hosts/10.1.1.1
и / var / log / syslog,

поскольку я наблюдаю оба, я вижу, что журналы заполняются в файле удаленного хоста, но не в системном журнале. , Я перезапустил apache и увидел записи в системном журнале для этой задачи.

parsecpython
источник
Спасибо за тестирование. Но это не работает для меня. Он все еще записывает все на серверы / var / log / syslog
Michael
0

Вы должны убедиться, что ваши новые правила оцениваются до того, как вы войдете в / var / log / syslog.
Например, в Ubuntu Trusty (rsyslog 7.4.4) /etc/rsyslog.conf содержит
$IncludeConfig /etc/rsyslog.d/*.conf
загрузку правил по умолчанию /etc/rsyslog.d/50-default.conf, в том числе для / var / log / syslog.

В этом случае вы можете добавить новый файл для загрузки перед этим, например 00-remote.conf. Для полноты, вот его содержание для системы, которой я управляю:

$template RemoteStore, "/var/log/remote/%HOSTNAME%/%timegenerated:1:10:date-rfc3339%"
:source,isequal,"NAS",-?RemoteStore
& ~
Joril
источник