Impedir que o rsyslog registre mensagens de hosts remotos no local / var / log / syslog

8

Eu uso o rsyslog para salvar logs de hosts remotos em um servidor da seguinte maneira:

Servidor:

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

Clientes:

*.* @servername

Isso cria arquivos de log para cada host do cliente nos servidores, /var/log/rsyslog/mas também registra todas as mensagens nos servidores /var/log/syslog. Então fica muito inchado. Como posso evitá-lo para que /var/log/syslogapenas contenha mensagens do próprio servidor?

Michael
fonte
1
Você deve procurar filtros baseados em propriedades, já que HOSTNAME é um dos campos do syslog. Você basicamente quer mudá-lo para que ele só seleciona os seus próprios registos para/var/log/syslog
Bratchley

Respostas:

2

Aqui está o que funciona para mim:

## 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
& ~
Hóspede
fonte
Por que existe uma duplicação entre TempAuth e TempMsg?
vdboor 17/03
0

Eu tenho trabalhado muito nisso e acho que encontrei uma solução. Encorajo outras pessoas a tentar isso e procurar consequências potencialmente adversas. Sugiro que isso seja implementado em laboratório / teste e em máquinas não críticas primeiro.

$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

As 4 linhas acima estão na parte superior do meu arquivo /etc/rsyslog.conf

No momento, estou assistindo dois arquivos de log:
/var/log/net-hosts/10.1.1.1
e / var / log / syslog

enquanto assisto a ambos, estou vendo logs preenchidos no arquivo host remoto, mas não no syslog . Reiniciei o apache e vi entradas de log no syslog para esta tarefa.

parsecpython
fonte
Obrigado por testar. Mas isso não funciona para mim. Ele ainda registra tudo a servidores / var / log / syslog
Michael
0

Você deve certificar-se de que suas novas regras sejam avaliadas antes daquela registrada em / var / log / syslog.
Por exemplo, no Ubuntu Trusty (rsyslog 7.4.4), o /etc/rsyslog.conf contém
$IncludeConfig /etc/rsyslog.d/*.conf
para que as regras padrão sejam carregadas /etc/rsyslog.d/50-default.conf, a do / var / log / syslog incluída.

Nesse caso, você pode adicionar um novo arquivo a ser carregado antes desse, como 00-remote.conf. Para completar, eis o conteúdo de um sistema que estou gerenciando:

$template RemoteStore, "/var/log/remote/%HOSTNAME%/%timegenerated:1:10:date-rfc3339%"
:source,isequal,"NAS",-?RemoteStore
& ~
Joril
fonte