Я хочу, чтобы rsyslog отправлял журналы только на централизованный сервер rsyslog, но он также отправляет их локально. Это по юридическим причинам, на серверах не будет каталога журналов, только централизованный сервер rsyslog будет иметь журналы.
Я думал, используя '& ~' в клиентском rsyslog.conf, он будет отправлять журналы только удаленно, но я ошибаюсь.
Вот конфигурация централизованного сервера rsyslog:
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
$ModLoad immark # provides --MARK-- message capability
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$klogConsoleLogLevel 3
$FileOwner root
$FileGroup root
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
*.info;*.!warn;\
authpriv.none;cron.none;mail.none;news.none -/var/log/messages
*.warn;\
authpriv.none;cron.none;mail.none;news.none -/var/log/syslog
*.=debug -/var/log/debug
authpriv.* -/var/log/secure
cron.* -/var/log/cron
mail.* -/var/log/maillog
*.emerg :omusrmsg:*
uucp,news.crit -/var/log/spooler
$template TmplAuth, "/var/log/rsyslog_custom/%HOSTNAME%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/rsyslog_custom/%HOSTNAME%/%PROGRAMNAME%.log"
authpriv.* ?TmplAuth
*.info,mail.none,authpriv.none,cron.none ?TmplMsg
Вот конфигурация клиента:
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
$ModLoad immark # provides --MARK-- message capability
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$klogConsoleLogLevel 3
$FileOwner root
$FileGroup root
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
*.info;*.!warn;\
authpriv.none;cron.none;mail.none;news.none -/var/log/messages &~
*.warn;\
authpriv.none;cron.none;mail.none;news.none -/var/log/syslog
*.=debug -/var/log/debug
authpriv.* -/var/log/secure
cron.* -/var/log/cron
mail.* -/var/log/maillog
*.emerg :omusrmsg:*
uucp,news.crit -/var/log/spooler
if $syslogfacility-text == 'local6' and $programname == 'httpd' then /var/log/httpd-access.log
if $syslogfacility-text == 'local6' and $programname == 'httpd' then ~
if $syslogfacility-text == 'local7' and $programname == 'httpd' then /var/log/httpd-error.log
if $syslogfacility-text == 'local7' and $programname == 'httpd' then ~
Вероятно, у вас проблемы с синтаксисом. Попробуйте написать правила с новым разделителем строк следующим образом:
if $syslogfacility-text == 'local6' and $programname == 'httpd' then /var/log/httpd-access.log &
~
Или даже лучше вы можете использовать современный синтаксис RainerScript вместо старого формата:
if ( $syslogfacility-text == 'local6' and $programname == 'httpd' )
then {
action(type="omfile" file="/var/log/httpd-access.log")
stop
}
Он более подробный и менее двусмысленный.
.