Я использую шаблон для динамического создания имен файлов rsyslog. Я внес некоторые изменения в исходный формат, но после перезапуска rsyslog по-прежнему использует как новый шаблон, так и старый.
Мой шаблон имени файла был следующим:
$template RemoteDailyLog,"/var/log/remote/%hostname%/%$year%/%$month%/%$day%.log"
К этому:
$template RemoteDailyLog,"/var/log/remote/%hostname%/%fromhost-ip%/%$year%/%$month%/%$day%.log"
Я остановил rsyslogd, используя service rsyslog stop
, удалил все мои файлы журнала, используя rm -rf /var/log/remote/*
, а затем перезапустил rsyslogd с service rsyslog start
.
Проблема в том, что rsyslog создает структуры папок типа "/var/log/remote/%hostname%/%$year%/%$month%/%$day%.log"
(т.е. без удаленного IP-адреса), который больше нигде не отображается в моей конфигурации.
Возможно ли, что старые данные журнала или конфигурации были где-то кэшированы и сохраняются после перезапуска сервера? Это меня немного пугает.
Эта проблема разрешилась сама собой после исправления связанный вопрос У меня был с rsyslog. Я не уверен, насколько это актуально, но если у rsyslog возникают проблемы с открытием файлов динамического журнала, похоже, что у него есть некоторая нестабильность в отношении прошлых конфигураций. Во всяком случае, вот перепечатка моего решения:
Изучив сервер / var / log / syslog, я обнаружил, что у rsyslog возникли проблемы с открытием динамических файлов. Оказывается, конфигурация Ubuntu 10.04 LTS по умолчанию для rsyslog не подходит для динамических (основанных на шаблонах) файлов журнала. Предлагаемый патч, созданный Ричардом Флемингом, выглядит следующим образом:
--- /etc/rsyslog.conf.orig 2009-11-17 11:21:10.874573462 -0500
+++ /etc/rsyslog.conf 2009-11-17 12:45:15.604573200 -0500
@@ -42,9 +42,11 @@
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
+$DirOwner syslog
+$DirGroup adm
$Umask 0022
$PrivDropToUser syslog
-$PrivDropToGroup syslog
+$PrivDropToGroup adm
#
# Include all config files in /etc/rsyslog.d/
Для получения дополнительной информации см .: https://bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/484336
Я столкнулся с той же странной проблемой, и мое решение проще (поток сводится к проблеме с разрешениями) ... поскольку файл состояния не содержит никакой конфиденциальной информации:
chmod 777 /var/lib/rsyslog
затем перезапустите rsyslog несколько раз.
Отказ от ответственности: Я знаю, что давать всем все в каталоге - не лучшая практика, и этот обходной путь немного глуп, но в этом случае из-за необъяснимой причины ошибки rsyslog мне пришлось сделать исключение, поскольку папка используется исключительно для состояния файлы для rsyslog. Обратите внимание, что я пробовал другие chown
настройки для предоставления привилегий эффективному пользователю rsyslog безуспешно, отсюда и этот глупый обходной путь.