Как переслать определенный файл журнала вне / var / log с rsyslog на удаленный сервер?

25

Как переслать сообщение из определенного файла журнала, например, /www/myapp/log/test.logс rsyslogклиента, на удаленный rsyslogсервер? Этот файл журнала находится за пределами каталога /var/log.

Кевин Кэмпион
источник

Ответы:

43

Просто настройте правило imfile в вашем /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>

Это просматривает файл и сохраняет в local3 средство в системном журнале. Затем вы можете отправить все данные из локального средства на ваш удаленный сервер. Вы также можете добавить следующее в ваш файл rsyslog conf (обычно это /etc/rsyslog.d/50-default.conf в Ubuntu), чтобы не сохранять средство local3 в / 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

Кроме того, я бы рекомендовал почитать из следующих документов по rsyslog для более сложной фильтрации:

  1. Заменитель собственности
  2. Условия фильтра
Брайан Йорк
источник
Это очень полезно, спасибо Брайан. Моя единственная проблема здесь заключается в том, чтобы запретить дополнительные журналы на стороне клиента / var / log / syslog не работает для меня в Ubuntu 12.04. Вероятно, PEBKAC, но мне интересно, если это известная проблема?
Джеймс Т Снелл
1
Догадаться. Моя проблема заключалась в том, что /etc/rsyslog.d/50-default.conf уже имел оператор, начинающийся с . ; auth; authpriv.none .. Эта строка, кажется, имеет приоритет. Таким образом, добавление последней строки, которую вы дали, не имеет никакого эффекта. Вместо этого существующий аналог должен быть изменен. Очень полезно. Благодарность!
Джеймс Т Снелл
1

В Ubuntu мне также пришлось закомментировать строки удаления привилегий, чтобы rsyslog действительно прочитал файл журнала вне / 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
источник