Как я могу отправить файлы журналов не по умолчанию на удаленный сервер rsyslog?
Да, я вижу, что вы хотите отметить это как дубликат, и я ценю это, но, пожалуйста, прочитайте до конца.
Я нашел этот вопрос в нескольких местах, и ответы либо слишком расплывчаты, чтобы нуб к rsyslog понять... как это
Waaay слишком сложно, чтобы быть простым для понимания способом делать то, что я хочу делать... вот так
Или очень близко к тому, что я ищу, но не совсем.... как это
Во всяком случае, на конкретный вопрос.
Сервер X = централизованный сервер системного журнала, на котором запущен rsyslog.
Сервер Y = Сервер, на котором работает Redmine
Я уже настроил Y для отправки файлов журнала по умолчанию в X. Я использовал эти инструкции в сочетании с некоторыми другими.
X /etc/rsyslog.conf:
# /etc/rsyslog.conf Configuration file for rsyslog.
#
# For more information see
# /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf
#################
#### MODULES ####
#################
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support
#$ModLoad immark # provides --MARK-- message capability
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
# This one is the template to generate the log filename dynamically, depending on the client's IP address.
$template FILENAME,"/var/log/logs/%fromhost-ip%/syslog.log"
# Log all messages to the dynamically formed file. Now each clients log (192.168.1.2, 192.168.1.3,etc...), wil l be under a separate directory which is formed by the template FILENAME.
*.* ?FILENAME
# Enable non-kernel facility klog messages
$KLogPermitNonKernelFacility on
###########################
#### GLOBAL DIRECTIVES ####
###########################
#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Filter duplicated messages
$RepeatedMsgReduction on
#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
Как видите, журналы, которые отправляются в X, помещаются в каталог, названный в честь IP-адреса, с которого они поступили.
Y /etc/rsyslog.d/10-rsyslog.conf
*.* @192.168.1.X:514
Это все работает, и я получаю все просто отлично.
То, что я хотел бы сделать, это иметь файл redmine.access.log, расположенный в /var/log/apache2/redmine.access.log
также отправлено на сервер системного журнала X
Как я уже сказал, я много читал об этом. Я просто не слежу за этим, и мне нужен более простой пример.
Я хотел бы сохранить файлы журналов в X и Y, поэтому их прямая привязка куда угодно, не то, что я хочу.
Инструкции, которые я нашел, выглядели самыми простыми, и я мог почти следовать им. Проблема в том, что на самом деле ничего не объясняется, и я действительно хочу понять, как это работает.
Меня не волнует, добавляется ли redmine.access.log вместе с материалом системного журнала (хотя я бы предпочел, чтобы он этого не делал), или если он записывается где-то в другом месте (хотя, очевидно, на X).
Если кто-то может написать, что, по его мнению, я должен делать, я обновлю свой вопрос, чтобы мой окончательный вариант конфигурации работал, так что, надеюсь, другие нубы могут извлечь пользу из моих глупых вопросов.
РЕДАКТИРОВАТЬ
Это изменение объясняет, почему это не дубликат.
Это дубликат.... Там я это признал.
Но я бы очень хотел увидеть что-то настолько простое, иметь настоящий законченный пример. Так что, если это будет помечено как дубликат и удалено, это нормально, но я все равно отредактирую его с рабочим примером в конце.
1 ответ
Все, что вам нужно сделать, это создать новый файл конфигурации в /etc/rsyslog.d/
а затем заполните его $Input[...]
директивы. Например
$InputFileName /var/log/apache2/redmine.access.log
$InputFileTag web.apache.access-combined.pro.whatever.yourface:
$InputFileStateFile stat-file1-ApacheAccess
$InputFileSeverity info
$InputFileFacility local7
$InputFilePollInterval 1
$InputFilePersistStateInterval 1
$InputRunFileMonitor
Добавьте такой блок для каждого файла, который вы хотите. На самом деле технически вам не нужно создавать новый конф, просто добавьте к уже существующему.
Если вы ищете решение для копирования / вставки, вы можете быть разочарованы. В конечном счете, rsyslog
Это не так сложно понять, так что у вас все получится. Что приятно.