Rsyslog: A partir de um arquivo de log customizado, Encaminhar apenas as mensagens que correspondem a um padrão

1

Desejo encaminhar mensagens que correspondam a um padrão ( HELLO neste caso) de um arquivo de log personalizado ( /home/ubuntu/test.log ) para um servidor rsyslog remoto.

Aqui está a configuração:

# cat /etc/rsyslog.d/05-forwarding.conf
*.* @@rsyslogserver.mycompany.com:10514

# cat /etc/rsyslog.d/10-custom.conf
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /home/ubuntu/test.log
$InputFileTag testlogs:
$InputFileStateFile testlogs
$InputRunFileMonitor
:msg, contains, "HELLO" /var/log/testlog_error.log
& stop
:msg, !contains, "HELLO" stop

Problema:

  1. Todas as mensagens direcionadas para /var/log/syslog foram interrompidas. < < NÃO É BOM
  2. As mensagens que contêm HELLO word em /home/ubuntu/test.log vão para /var/log/testlog_error.log , além de serem encaminhadas para o servidor rsyslog remoto, < < BOM
  3. As mensagens NOT contendo HELLO word em /home/ubuntu/test.log não vão para /var/log/testlog_error.log , o que é GOOD , mas essas mensagens estão sendo encaminhadas para o servidor remoto rsyslog. < < BAD

Minha situação ideal deve ser:

  1. O sistema e todas as outras mensagens devem continuar em /var/log/syslog
  2. Sem alteração aqui. Isso está funcionando como esperado.
  3. As mensagens NOT contendo HELLO word em /home/ubuntu/test.log devem ser completamente descartadas. Não escreva no arquivo local, assim como não encaminhe essas mensagens para o servidor remoto.

Precisa de ajuda para resolver os pontos 1 e 3 acima.

    
por slayedbylucifer 21.10.2016 / 13:50

1 resposta

4

Como está, o seu arquivo /etc/rsyslog.d/05-forwarding.conf está encaminhando todas as mensagens que passam pelo pensamento, e não apenas as mensagens do seu arquivo personalizado / home / ubuntu /test.log . Assim, você pode excluir , como você disse, você só quer encaminhar mensagens do seu arquivo personalizado.

Seu arquivo /etc/rsyslog.d/10-custom.conf deve se parecer com:

$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /home/ubuntu/test.log
$InputFileTag testlogs:
$InputFileStateFile testlogs
$InputFileFacility local0
$InputRunFileMonitor

:syslogtag, isequal, "testlogs:" {
  :msg, contains, "HELLO" {
    local0.* /var/log/testlog_error.log
    local0.* @@rsyslogserver.mycompany.com:10514
  }
  stop
}

Como você pode ver, adicionei o seguinte:

$InputFileFacility local0

Agora, seu arquivo personalizado será monitorado e as mensagens serão gravadas na instalação local0. Mensagens de local0 terão a tag associada a você.

:syslogtag, isequal, "testlogs:"

Esta regra corresponderá apenas a uma mensagem que contenha a tag testlogs :, exatamente as mensagens que você deseja. Assim, todas as outras mensagens irão ignorá-lo e estarem registradas em / var / log / syslog e tudo o mais que estiver em 50-default.conf.

:msg, contains, "HELLO"

Agora, todas as mensagens do seu arquivo que contenham HELLO, serão registradas em /var/log/testlog_error.log e encaminhadas para @@ rsyslogserver.mycompany.com: 10514.

E então, o "stop" irá descartar todas as mensagens do seu arquivo que estão sendo escritas em local0.

    
por 21.10.2016 / 21:42