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

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

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

Когда вы используете *.* ?Message_log в конце файла сообщение будет передано в *.info;mail.none;authpriv.none;cron.none /var/log/messages, как вы и ожидали.

Перед $IncludeConfig /etc/rsyslog.d/*.conf, вам нужно объявить свой шаблон и использовать если выражение для фильтрации вашего сообщения. Попробуйте сделать следующее:

$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
}

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

Альтернативой ему является создание файла в /etc/rsyslog.d/, например 00-example.conf, чтобы сделать ваши конфигурации более организованными. Но убедитесь, что номер файла должен быть меньше, чем номер файла по умолчанию (то есть 50).