Действительно озадачен тем, что произошло. Некоторое время у меня был запущен rsyslogd на сервере Centos 6.5, и теперь он ведет журнал для удаленных хостов в специальной папке / data / rsyslog. Вчера я настроил наш брандмауэр для начала ведения журнала, и он работал нормально, за исключением того, что журналы были большими для этого брандмауэра, поэтому я решил настроить задание logrotate для его ротации. Этим утром все журналы изменились, но больше не ведется запись ни в какие файлы в моей папке rsyslog ни для каких хостов. Сначала я подумал, что что-то не так с созданием нового файла, но я обнаружил, что все удаленные журналы теперь идут в стандартный файл / var / log / message. Это мой файл rsyslog.conf:
[root@backup1 etc]# cat rsyslog.conf
# rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
#### GLOBAL DIRECTIVES ####
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
$template Secure_log,"/data/rsyslog/%fromhost%.secure"
$template Message_log,"/data/rsyslog/%fromhost%.message"
Таким был файл, но я обнаружил, что у меня нет действия, поэтому я добавил следующую строку в конец для проверки:
*.* ?Message_log
И теперь все идет в файлы имен хостов, как и ожидалось, в эту папку, но также ведется запись в папку / var / log. Я предполагаю, что строка выше делает это с / var / log / messages. Я обновился до rsyslogd версии 7, пытаясь заставить это работать. Не уверен, что произошло, но просто пытаюсь заставить его работать с нуля и, похоже, не может отследить правильную конфигурацию для регистрации удаленных хостов только в этой специальной папке. Может ли кто-нибудь помочь?
Если вы хотите, чтобы ваши сообщения были записаны в конкретный файл, вам необходимо отфильтровать свое сообщение.
Когда вы используете *. *? Message_log
в конце файла сообщение будет проходить раньше в *. info; mail.none; authpriv.none; cron.none / var / log / messages
, как вы и ожидали.
До $ IncludeConfig /etc/rsyslog.d/*.conf
, вам нужно объявить свой шаблон и использовать выражение if для фильтрации вашего сообщения. Попробуйте сделать следующее:
$template Secure_log,"/data/rsyslog/%fromhost%.secure"
$template Message_log,"/data/rsyslog/%fromhost%.message"
if ($fromhost-ip == "THE IP OF THE ONE SENDING MESSAGES") then {
*.* ?Message_log
stop
}
Это будет записывать нужные сообщения в указанный вами файл и отбрасывать их с помощью stop , поэтому они не будут записаны где-либо еще.
Альтернативой этому является создание файла в /etc/rsyslog.d/, например 00-example.conf , чтобы сделать ваши конфигурации более организованными. Но убедитесь, что номер файла должен быть меньше номера файла по умолчанию (то есть 50).