¿Cómo reenviar un archivo de registro específico fuera de / var / log con rsyslog al servidor remoto?

25

¿Cómo puedo reenviar un mensaje desde un archivo de registro específico como /www/myapp/log/test.logcon el rsyslogcliente al rsyslogservidor remoto ? Este archivo de registro está fuera del directorio /var/log.

Kevin Campion
fuente

Respuestas:

43

Simplemente configure una regla de archivo en su /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>

Esto mira un archivo y lo guarda en la instalación local3 en syslog. Luego puede enviar todos los datos de la instalación local3 a su servidor remoto. También puede agregar lo siguiente a su conf rsyslog (generalmente /etc/rsyslog.d/50-default.conf en Ubuntu) para no guardar la instalación local3 en / 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

Además, recomendaría leer algunos de los siguientes documentos de rsyslog para un filtrado más avanzado:

  1. El sustituto de la propiedad
  2. Condiciones de filtro
Bryan York
fuente
Esto es muy útil, gracias Bryan. Mi único desafío aquí es que la línea para mantener los registros adicionales fuera del lado del cliente / var / log / syslog no funciona para mí en Ubuntu 12.04. Probablemente un PEBKAC, pero me pregunto si este es un desafío conocido.
James T Snell
1
Lo averigué. Mi problema fue que /etc/rsyslog.d/50-default.conf ya tenía una declaración que comenzaba con . ; auth; authpriv.none .. Esa línea parece tener prioridad. Entonces, al agregar la última línea que ha dado, no tiene ningún efecto. En cambio, el similar preexistente debe ser modificado. Muy útil. ¡Gracias!
James T Snell
1

En ubuntu, también tuve que comentar las líneas de privilegios de caída para que el rsyslog realmente lea el archivo de registro fuera 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
fuente