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

Сервер syslog-ng 3.2.5 перестает получать данные, возможно, связанные с logrotate

Я задавал этот вопрос в Unix и Linux, но я думаю, что здесь он подходит лучше.

В настоящее время я использую следующую конфигурацию logrotate.d

/var/log/messages 
{
    daily
    compress
    rotate 7
    postrotate
            /bin/kill -HUP `cat /var/run/syslog-ng.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

Однако в официальном примере logrotate в репозитории syslog-ng я вижу, что вместо kill -HUP они выполняют перезагрузку, например:

/var/log/syslog.log {
   rotate 7
   daily
   compress
   postrotate
      /etc/init.d/syslog-ng reload >/dev/null
  endscript
}

Есть ли существенная разница между этими двумя методами, которые заставят их работать, но мой способ не работает, или вы ожидаете, что возникнет какая-то другая проблема? Это довольно старая версия syslog-ng, поэтому я не уверен, может ли это быть связано с ней.

Для дополнительного контекста вот функция перезагрузки из моей версии сценария инициализации syslog-ng.

reload()
{
        verify_config
        echo -n $"Reloading syslog-ng: "
        killproc syslog-ng -HUP
        RETVAL=$?
        echo
        return $RETVAL
}

Я действительно проверял lsof, свободную память и многое другое, когда система находилась в неисправном состоянии и не заметил ничего слишком подозрительного в состоянии системы.

Проблема не была связана с logrotate, и проблема, похоже, решена путем обновления до более новой версии syslog-ng (до 3.9.1). Я думаю, что основной причиной была ошибка, вызванная большой нагрузкой на сервер. Я мог сказать, что это не проблема с postrotate, поскольку оба примера успешно перезагрузили службу, а в более старой версии изменение между ними в конечном итоге не изменило поведение при сбое.