Como usar o rsyslog para registrar arquivos do cliente para o servidor

1

Eu configurei um servidor rsyslog que aceita informações de registro de clientes.

Eu posso receber mensagens syslog com sucesso, mas estou interessado em registrar vários arquivos também .

Aqui está o meu cliente:

$ModLoad imfile

$InputFileName /var/log/drew-error.log
$InputFileTag drew:
$InputFileStateFile stat-drew-error
$InputFileSeverity error
$InputRunFileMonitor

$InputFilePollInterval 1

Não sei exatamente o que colocar na configuração do meu servidor. Idealmente, gostaria que o servidor emitisse algo assim:

/var/log/remote/$HOSTNAME/drew-error.log

Estou indo sobre o caminho certo? Isso é razoável para tentar alcançar?

Cenário de melhor caso: Gostaria de poder atualizar os arquivos que estou assistindo no cliente, sem precisar reconfigurar o servidor. Se isso não for possível, ou muito difícil, provavelmente posso trabalhar em torno de uma solução codificada.

O que eu tentei

Até o momento, experimentei algumas configurações para o servidor (embora ache que não são a solução / abordagem correta):

$template syslog, "/var/log/remote/%hostname%/%programname%/%$year%%$month%%$day%/syslog"
*.*;auth,authpriv.none          ?syslog

e

$template DrewTemplate,"/var/log/remote-DREWAPP-%HOSTNAME%.log"
if $programname == 'drew:' then -?DrewTemplate
& ~

$template PerHostLog,"/var/log/remote-%HOSTNAME%.log"
if $fromhost-ip startswith '1.2.' then -?PerHostLog
& ~
    
por Drew Khoury 13.03.2014 / 08:01

1 resposta

1

Uma solução é verificar o $ programname (que é preenchido com o valor de $ InputFileTag no cliente para cada arquivo monitorado).

Configuração do cliente

No cliente, crie seu (s) monitor (es) de arquivos e certifique-se de que $ InputFileTag comece com 'file-'. Aqui está um exemplo com arquivos de log foo e bar:

######################### START /var/log/foo.log
$InputFileName /var/log/foo.log
$InputFileTag file-foo:
$InputFileStateFile stat-foo
$InputFileSeverity info
$InputRunFileMonitor
######################### END /var/log/foo.log

######################### START /var/log/bar.log
$InputFileName /var/log/bar.log
$InputFileTag file-bar:
$InputFileStateFile stat-bar
$InputFileSeverity info
$InputRunFileMonitor
######################### END /var/log/bar.log

Configuração do servidor

E, no servidor, verifique se $ programname começa com 'file-' (como deveria ser o caso de todos os monitores de arquivos, mas não de qualquer mensagem syslog padrão). Aqui está um exemplo:

$template FileTemplate,"/var/log/remote-%HOSTNAME%-%programname%.log"
if $programname startswith 'file-' then -?FileTemplate
& ~
  • Esta solução verifica se o $ programname começa com 'file -'
  • Desde que você tenha controle sobre como rotular $ InputFileTag (no cliente), essa solução funciona muito bem
  • O modelo usa nome do programa e nome do host para manter nomes de arquivos exclusivos no servidor
  • O & ~ garante que esta mensagem do syslog não seja processada mais abaixo na configuração
  • Esta solução fornece uma configuração no servidor que não precisa ser atualizada sempre que você adiciona um novo monitor de arquivo no cliente.
por 17.03.2014 / 02:07

Tags