Я установил сервер журналов, используя rsyslog с relp. Он отлично работает, поскольку получает удаленные журналы и помещает их в / var / spool / rsyslog.
Моя проблема: большинство этих сообщений также появляются в моем файле / var / log / messages, который может стать довольно большим и довольно быстрым.
Моя конфигурация на сервере логирования:
#### MODULES ####
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
# RELP config
$ModLoad imrelp
$InputRELPServerRun 2514
#### GLOBAL DIRECTIVES ####
# Filter duplicated messages
$RepeatedMsgReduction on
# Set the default permissions for all log files.
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
# Where to place spool files
$WorkDirectory /var/spool/rsyslog
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
# global templates
# DONT CHANGE UNLESS YOU KNOW WHAT YOU ARE DOING
$ActionFileDefaultTemplate RSYSLOG_ForwardFormat
$template precise,"%syslogpriority% %syslogfacility% %timegenerated% %HOSTNAME% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate precise
# This should place all remote log items into /var/spool/rsyslog
$template RemoteHost,"/var/spool/rsyslog/%programname%.log"
# My brain says: this prevents anything coming in from a remote host from
# being written in /var/log/whatever - MY BRAIN LIES TO ME!
if ($hostname != 'my.server.name') then ?RemoteHost
&~
Я читал справочную страницу, в которой говорится, что проверка имени хоста и "амперсандная тильда" должны предотвратить заражение моих файлов журналов удаленным материалом.
Подсказки?
DISTRIB_DESCRIPTION = "Ubuntu 12.04.3 LTS"
у вас должно быть что-то подобное в вашем файле конфигурации rsyslog
*.*;auth,authpriv.none -/var/log/syslog
Если вы посмотрите, вы регистрируете ВСЕ уровни серьезности из ВСЕХ средств в файле системного журнала, за исключением средств auth и authpriv.
Просто добавьте объект, который вы не хотите регистрировать, а также уровень серьезности «нет». I.E: местные6:
*.*;auth,authpriv.none;local6.none -/var/log/syslog
Конечно, вы должны перезапустить или перезагрузить демон rsyslog после изменения файлов конфигурации.
Надеюсь, это поможет, хотя это далеко не просто использование сложных фильтров rsyslog.
я не уверен, можете ли вы использовать имена хостов на этом этапе.
лично я использовал $ fromip == 'x.x.x.x' как условие для разных имен файлов.
ниже приведен хороший пример, который работает для моей настройки, хотя это может быть проблемой, если у вас много разных диапазонов IP.
это скопировано из
http://www.rsyslog.com/tag/more-complex-scenarios/
Сохранение сообщений из удаленной системы в конкретный файл 23 февраля 2010 г.
Это сценарий консолидации журналов. Существует как минимум две системы, сервер и как минимум один клиент. Сервер предназначен для сбора данных журнала от всех клиентов. Клиенты могут (или не могут) обрабатывать и хранить сообщения локально. Если да, то здесь все равно. См. Рецепт «Отправка сообщений на удаленный сервер системного журнала», чтобы узнать, как настроить клиентов.
Сообщения от удаленных хостов в сети 192.0.1.x должны быть записаны в один файл, а сообщения от удаленных хостов в сети 192.0.2.x должны быть записаны в другой файл. О чем подумать
Протокол TCP не является встроенной возможностью. Вам необходимо загрузить плагин imtcp, чтобы включить его. Это нужно сделать только один раз в rsyslog.conf. Сделайте это прямо вверху.
Обратите внимание, что адрес порта сервера, указанный в $ InputTCPServerRun, должен совпадать с адресом порта, на который клиенты отправляют сообщения. Заявления конфигурации
$ModLoad imtcp
$InputTCPServerRun 10514
# do this in FRONT of the local/regular rules
if $fromhost-ip startswith '192.0.1.' then /var/log/network1.log
& ~
if $fromhost-ip startswith '192.0.2.' then /var/log/network2.log
& ~
# local/regular rules, like
*.* /var/log/syslog.log
Это то, что у меня работает.
Для приема информации системного журнала от удаленных хостов
$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
& ~
Как насчет следующего?
if ($hostname != $fromhost) then {
## No further processing.
stop
}