проблема удаленного клиента / сервера 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 ~
3
задан 25 March 2016 в 20:37
1 ответ

Вероятно, у вас проблемы с синтаксисом. Попробуйте написать правила с новым разделителем строк следующим образом:

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
}

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

.
1
ответ дан 3 December 2019 в 07:25

Теги

Похожие вопросы