Rsyslog, регистрирующийся к прокрученному журналу вместо развернутого журнала

Простите мне, если я неопределенен, но я пытаюсь сохранить это максимально безопасным.

У меня есть установка сервера CentOS как центральный удаленный сервер входа. Серверы отправляли свои журналы на этот сервер в течение нескольких месяцев теперь без проблемы. Эти файлы журнала прокручиваются ежемесячно и работали без инцидента. В этом месяце однако, (без любых изменений конфигурации, которые я знаю) rsyslog, как решено отправить новые файлы журнала в прокрученный файл журнала (access_log-20150901), скорее затем развернутый файл (access_log).

Странная вещь состоит в том, что я даже переместил прокрученный журнал (access_log-20150901) в каталог архивов и rsyslog все еще отправляет обновления того файла.

Я использую пользовательские фильтры, которые похожи на это:

if $programname contains 'access_log' then /var/log/remotelog/access_log

Однако это обновляет файл в:

/var/log/remotelog/archive/access_log-20150901

Кто-либо знает то, что продолжается здесь?

К вашему сведению. Полномочия являются всеми одинаковыми для всех этих файлов и папок.

Править: Зафиксированные logrotate, с постповорачивают метод для перезапуска rsyslog после того, как журналы вращались

/var/log/remotelog/access_log
{
    missingok
    notifempty
    monthly
    create 0660 <user> <group>
    rotate 12
    postrotate
        /sbin/service rsyslog reload > /dev/null 2>/dev/null || true
    endscript
}

версия rsyslog: rsyslogd 8.9.0.ad1

0
задан 3 September 2015 в 23:17
1 ответ

У вас есть два основных варианта, IMHO.

1) добавьте предложение "postrotate" в раздел logrotate, чтобы выдать HUP на pid rsyslog

2) добавьте этот файл в спецификацию файлов rsyslog в файле /etc/logrotate.d/rsyslog .

Проблема в том, что вы никогда не перезапускали демон rsyslog после вращения, поэтому он все еще держится к старому дескриптору файла внутри. Вероятно, до сих пор это работало нормально, потому что ротация файлов rsyslog занимала больше времени, чем ротация этого файла, что означает, что HUP для файлов rsyslog наступил после того, как этот файл был повернут. В последнее время эта ротация занимала больше времени, чем ротация файлов rsyslog, поэтому HUP выполнялась до закрытия / ротации этого файла журнала. После HUP в rsyslog все еще был открыт старый файл, и функция rotate никогда не уведомляла rsyslog об обновлении его внутреннего дескриптора файла.

1
ответ дан 4 December 2019 в 16:50

Теги

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