rsyslog - duplicação de log usando 2 servidores

0

Estou usando o rsyslog e tentando fazer a seguinte configuração:

 1. Server 1 - log all local messages and log messages from server2

 2. Server 2 - log all local messages and log messages from server1

Assim, os dois servidores devem conter o syslog local e remoto.

Então o que eu coloquei na seção de encaminhamento arquivos de configuração do rsyslog.conf são:

SERVIDOR1:

 # ### begin forwarding rule ###
 # The statement between the begin ... end define a SINGLE forwarding
 # rule. They belong together, do NOT split them. If you create multiple
 # forwarding rules, duplicate the whole block!
 # Remote Logging (we use TCP for reliable delivery)
 #
 # An on-disk queue is created for this action. If the remote host is
 # down, messages are spooled to disk and sent when it is up again.
 $WorkDirectory /var/lib/rsyslog # where to place spool files
 $ActionQueueFileName server1 # unique name prefix for spool files
 $ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
 $ActionQueueSaveOnShutdown on # save messages to disk on shutdown
 $ActionQueueType LinkedList   # run asynchronously
 $ActionResumeRetryCount -1    # infinite retries if host is down
 # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
 *.* @@10.0.0.2
 # ### end of the forwarding rule ###

SERVER2:

 # ### begin forwarding rule ###
 # The statement between the begin ... end define a SINGLE forwarding
 # rule. They belong together, do NOT split them. If you create multiple
 # forwarding rules, duplicate the whole block!
 # Remote Logging (we use TCP for reliable delivery)
 #
 # An on-disk queue is created for this action. If the remote host is
 # down, messages are spooled to disk and sent when it is up again.
 $WorkDirectory /var/lib/rsyslog # where to place spool files
 $ActionQueueFileName server2 # unique name prefix for spool files
 $ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
 $ActionQueueSaveOnShutdown on # save messages to disk on shutdown
 $ActionQueueType LinkedList   # run asynchronously
 $ActionResumeRetryCount -1    # infinite retries if host is down
 # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
 *.* @@10.0.0.1
 # ### end of the forwarding rule ###

O problema é que isso basicamente causa uma situação como um loop infinito. I.E. Cada sistema obtém seu próprio e, em seguida, todas as novas entradas provenientes de cada sistema. Assim, isso preenche os arquivos de log rapidamente, com as informações idênticas sendo continuamente replicadas repetidas vezes.

Existe alguma maneira de fazer o que eu quero?

Estou usando o padrão rsyslog v5 (RHEL 6 / Centos 6).

    
por mdpc 09.02.2017 / 02:25

1 resposta

2

Você pode fazer isso usando condicionais , embora a configuração da sintaxe do rsyslog dependa da versão que você está executando - e essa versão do CentOS está ficando antiga.

Após a configuração do seu servidor udp ( UDPServerRun ou lookalike), e antes das diretivas encaminharem mensagens para o remoto, você pode tentar adicionar o seguinte:

if $fromhost-ip startswith '10.0.0.' then /var/log/remotelogs.log
& ~

Isso deve enviar logs remotos para um arquivo separado e evitar processamento / retransmissão adicional.

Embora se você pretende encaminhar mensagens syslog, eu recomendo que você considere a configuração de um servidor de proxy / armazenamento syslog dedicado - até mesmo dois, se a manutenção de cópias duplicadas for obrigatória. Se você acha que um servidor syslog simples não vale seu tempo: você pode dar uma olhada no Logstash (e na pilha ELK em geral), ou no Splunk, ... talvez como um projeto paralelo.

    
por 09.02.2017 / 06:17