Como encaminhar um arquivo de log específico fora de / var / log com o rsyslog para o servidor remoto?

24

Como posso encaminhar mensagem de um arquivo de log específico, como /www/myapp/log/test.logcom rsyslogo cliente para remoto rsyslogservidor? Este arquivo de log está fora do diretório /var/log.

Kevin Campion
fonte

Respostas:

42

Basta configurar uma regra de arquivo no seu arquivo /etc/rsyslog.conf

#/etc/rsyslog.conf
$ModLoad imfile
$InputFileName /data/mysql/error.log
$InputFileTag mysql-error
$InputFileStateFile stat-mysql-error
$InputFileSeverity error
$InputFileFacility local3
$InputRunFileMonitor
local3.* @@hostname:<portnumber>

Isso observa um arquivo e salva no recurso local3 no syslog. Em seguida, você pode enviar todos os dados da instalação local3 para o servidor remoto. Você também pode adicionar o seguinte ao seu rsyslog conf (geralmente /etc/rsyslog.d/50-default.conf no Ubuntu) para não salvar o recurso local3 em / var / log / syslog:

#/etc/rsyslog.d/50-default.conf
*.*;auth,authpriv.none,local1.none,local2.none,local3.none,local4.none,local5.none,local6.none          -/var/log/syslog

Além disso, eu recomendaria algumas leituras dos seguintes documentos rsyslog para uma filtragem mais avançada:

  1. O substituto da propriedade
  2. Condições de filtro
Bryan York
fonte
Isso é muito útil, obrigado Bryan. Meu único desafio aqui é a linha para manter os logs extras fora do lado do cliente / var / log / syslog não funciona para mim no Ubuntu 12.04. Provavelmente um PEBKAC, mas gostaria de saber se este é um desafio conhecido.
James T Snell
Descobri isso. Meu problema era que /etc/rsyslog.d/50-default.conf já tinha uma instrução começando com . ; auth; authpriv.none .. Essa linha parece ter precedência. Então, adicionando a última linha que você deu, ela não tem efeito. Em vez disso, o semelhante pré-existente deve ser modificado. Muito útil. Obrigado!
James T Snell
1

No ubuntu, eu também tive que comentar as linhas de privilégios para remover o rsyslog para realmente ler o arquivo de log fora de / var / logs.

#/etc/rsyslog.conf
$ModLoad imfile
$InputFileName /data/mysql/error.log
$InputFileTag mysql-error
$InputFileStateFile stat-mysql-error
$InputFileSeverity error
$InputFileFacility local3
$InputRunFileMonitor
local3.* @@hostname:<portnumber>

# Set the default permissions for all log files.
#
#$FileOwner syslog
#$FileGroup adm
#$FileCreateMode 0640
#$DirCreateMode 0755
#$Umask 0022
#$PrivDropToUser syslog
#$PrivDropToGroup syslog
jozwikjp
fonte