Шаблон rsyslogd перестал работать

Действительно озадачен тем, что произошло. Некоторое время у меня был запущен 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, пытаясь заставить это работать. Не уверен, что произошло, но просто пытаюсь заставить его работать с нуля и, похоже, не может отследить правильную конфигурацию для регистрации удаленных хостов только в этой специальной папке. Может ли кто-нибудь помочь?

0
задан 4 December 2015 в 20:44
1 ответ

Если вы хотите, чтобы ваши сообщения были записаны в конкретный файл, вам необходимо отфильтровать свое сообщение.

Когда вы используете *. *? 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).

0
ответ дан 5 December 2019 в 11:24

Теги

Похожие вопросы