Como editar mensagens de envio com o Rsyslog?

1

Eu tenho um servidor rsyslog que envia mensagens.

Eu me pergunto, é possível que eu possa editar qualquer um dos dados que eu encaminhar?

Em outras palavras, um dos logs que eu envio inclui as seguintes informações:

<13>Nov 29 08:00:00 localhost CEF: 0|212|656|1|1|Bot Access Control|4| fileId=739000180002315518 sourceServiceName=

E eu estaria interessado em mudar o nome do host, por exemplo. De localhost para HOST01

<13>Nov 29 08:00:00 HOST01 CEF: 0|212|656|1|1|Bot Access Control|4| fileId=739000180002315518 sourceServiceName=

Eu não tenho controle sobre onde os logs são recebidos, apenas a entrega.

    
por xav 29.11.2017 / 13:31

1 resposta

2

Você pode fazer isso usando substitutos de propriedade trabalhando na propriedade msg , supondo que é onde a string localhost é encontrada.

Coloque no seu rsyslog.conf ou similar uma linha definindo um modelo chamado, digamos, newmsg :

$template newmsg,"%timestamp% %programname% %msg:R,ERE,1:(.*) localhost --end% HOST01 %msg:R,ERE,1: localhost (.*)--end%\n"

Para tornar isso mais legível aqui, ele é dividido em várias linhas, mas você deve usar a versão acima:

$template newmsg,
 "%timestamp% %programname% 
  %msg:R,ERE,1:(.*) localhost --end%
  HOST01 
  %msg:R,ERE,1: localhost (.*)--end%
 \n"

Contém 2 usos de um substituto assim: %msg:R,ERE,1: ...(...)... --end% onde %msg% é a propriedade usada como entrada para um regexp R , estendida regexp ERE , mantém apenas o grupo de captura 1, seguido pelo padrão regexp que tem um grupo de captura () , com o substituto finalizado por --end .

Como esse modelo sempre adiciona a palavra HOST01 à mensagem, você só deve usá-la se a mensagem realmente contiver localhost , então edite a ação em que você registra a mensagem para testar isso, por exemplo:

:msg, contains, " localhost "      -/var/log/test.log; newmsg

Observe o uso do modelo no final: ; newmsg .

Você também pode usar modelos ao enviar para um controle remoto, por exemplo:

action(type="omfwd" 
 Target="server.example.net"
 Port="10514"
 Protocol="tcp"
 Template="newmsg"
)
    
por 29.11.2017 / 15:36

Tags