Назад | Перейти на главную страницу

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

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

Просто установите правило 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>

Это наблюдает за файлом и сохраняет его в локальном3 в системном журнале. Затем вы можете отправить все данные с 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. Условия фильтрации

В 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