Como configuro o rsyslog para enviar logs de um programa específico para um servidor syslog remoto?

14

Eu tenho um programa que é enviado para o syslog com um determinado nome de tag / programa. Gostaria de poder filtrar o tráfego do syslog desse programa e enviá-lo para um servidor syslog remoto, deixando todo o outro tráfego syslog local.

Eu posso enviar todo o tráfego para o servidor remoto com

*.* @remote_server

Como faço para filtrar?

    
por Simmo 11.09.2012 / 17:11

1 resposta

28

Os arquivos de configuração do Rsyslog estão localizados em: /etc/rsyslog.d/*.conf

O Rsyslog lê os arquivos conf sequencialmente, por isso é importante que você nomeie seu arquivo de configuração para que a configuração específica seja carregada antes de qualquer outra coisa acontecer. Portanto, nomeie seu arquivo começando com zero, ou seja, 00-my-file.conf . É melhor criar um novo arquivo para que as atualizações e assim por diante não sobrescrevam sua configuração local.

Exemplo:

if $programname == 'programname' and $msg contains 'a text string' and $syslogseverity <= '6' then /var/log/custom/bind.log

Ou se você quiser descartar apenas algumas entradas:

if $programname == 'programname' then ~

No seu caso: (UDP)

if $programname == 'programname' then @remote.syslog.server
& ~

Ou (TCP)

if $programname == 'programname' then @@remote.syslog.server
& ~

O & ~ significa parar ainda mais as entradas de correspondência (linha anterior!).

Algumas informações mais gerais:

Além disso, sempre verifique se os filtros estão na mesma linha:

# Example: Log mail server control messages to mail-queue.log
if $hostname == 'titus'\
and $programname == 'smtp.queue.'\
and $syslogseverity <= '6' then /var/log/titus/mail-queue.log
& ~

Filtros úteis:

$hostname
$programname
$msg
$syslogseverity

Operadores:

== (equals)
contains
and
or

Mais informações: link

    
por oblivian 11.09.2012 / 19:27