Назад | Перейти на главную страницу

проблема удаленного клиента / сервера rsyslog

Я хочу, чтобы 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
}

Он более подробный и менее двусмысленный.