Установка предела размера для текущего syslog

Вопрос или проблема

Основываясь на других темах, единственный способ установить ограничение по размеру для текущего syslog (/var/log/syslog) кажется связанным с rsyslog, что немного сложно. Я заменил следующую строку в /etc/rsyslog.d/50-default.conf:

.*;auth,authpriv.none       -/var/log/syslog

на эти 2 строки:

$outchannel mysyslog,/var/log/syslog,1073741824,/home/username/.me/log_rotation_script
*.*;auth,authpriv.none          :omfile:$mysyslog

Моя проблема заключается в том, что независимо от того, что я помещаю в log_rotation_script, я получаю одну и ту же ошибку, когда очищаю syslog и перезапускаю rsyslog.service. После того как syslog достигает 1 ГБ, rsyslog всегда выдает одну и ту же ошибку ниже:

Mar 01 22:17:27 # rsyslogd[341844]: программа '/home/username/.me/log_rotation_script' (pid 341977) завершилась с кодом 1 [v8.2001.0]

Mar 01 22:17:27 # rsyslogd[341844]: команда ограничения размера файла для файла '/var/log/syslog' не разрешила ситуацию [v8.2001.0]

Возвращается status 1, даже если я помещаю только команду echo внутрь log_rotation_script!

Обратите внимание, что с самим скриптом или путем все в порядке, так как выполнение содержимого файла по указанному пути работает без каких-либо проблем, если я выполняю, например, с помощью команды ниже:

bash /home/username/.me/log_rotation_script

Что я здесь упускаю? Пожалуйста, помогите!

Rsyslog запускается с правами root, но затем сбрасывает права и выполняется как пользователь syslog. Проверьте директивы конфигурации $PrivDropToUser и $PrivDropToGroup в /etc/rsyslog.conf:

$PrivDropToUser syslog
$PrivDropToGroup syslog

Поскольку у пользователя syslog не так много прав, он не может выполнить logrotate, потому что logrotate нуждается в доступе к своему файлу состояния, который не разрешает доступ для пользователя syslog. Также в моем случае мне нужно было перезапустить rsyslog после ротации логов, но снова, у пользователя syslog не было прав на это.

Я пробовал другие способы обойти эти ограничения (sudoers, дополнительные права), но каждый раз, когда я решал одну проблему, возникала другая, поэтому я считал функцию logrotate и $outchannel бесполезной.

Кажется, что она возвращает ошибку для любой команды, которую вы помещаете в $outchannel, кроме rm и mv (эти две команды работают). Я пытался truncate файл, но это не сработало с программа '/usr/bin/truncate' (pid 1234) завершилась с кодом 1 [v8.2001.0], однако rm работает, и вам даже не нужно перезагружать rsyslog:

$outchannel syslog_file,/var/log/syslog,100000,/usr/bin/rm /var/log/syslog

*.*;auth,authpriv.none         :omfile:$syslog_file

Можно усечь логи, указав размер для команды truncate, т.е. $outchannel mysyslog,/var/log/syslog,1048576,/usr/bin/truncate -s 1M /var/log/syslog. В противном случае rm работает отлично, как упомянуто в решении Олександыра.

Ответ или решение

Установка лимита размера для текущего syslog: Подробное руководство

Настройка ограничений размера для журнала syslog (/var/log/syslog) в системе Linux — задача, которая может вызвать некоторые затруднения. В этой статье мы рассмотрим, как установить размер лимита для syslog с использованием rsyslog и решим связанные проблемы, которые могут возникнуть в процессе.

1. Понимание rsyslog и его конфигурации

Rsyslog — это расширенная версия syslog, предоставляющая большую гибкость в управлении журналами. Чтобы установить лимит на размер файла syslog, вам нужно отредактировать конфигурацию rsyslog, которая обычно находится в /etc/rsyslog.d/50-default.conf.

2. Настройка конфигурации

Сначала замените оригинальную строку, отвечающую за вывод в syslog, на следующие две строки:

$outchannel mysyslog,/var/log/syslog,1073741824,/home/username/.me/log_rotation_script
*.*;auth,authpriv.none :omfile:$mysyslog

В этом примере 1073741824 указывает лимит в 1 ГБ, а log_rotation_script — это скрипт, который будет выполнен при достижении лимита.

3. Проблемы с запуском скрипта

После настройки конфигурации и перезапуска rsyslog у вас могут возникнуть ошибки, такие как:

program '/home/username/.me/log_rotation_script' (pid xxx) exited with status 1
file size limit cmd for file '/var/log/syslog' did no resolve situation

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

4. Проверка прав доступа и привилегий

Вы можете проверить, какие пользователи и группы настроены в вашем файле конфигурации rsyslog:

$PrivDropToUser syslog
$PrivDropToGroup syslog

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

5. Особенно рекомендованные команды

Некоторые команды могут выполняться успешно, например, rm и mv. Однако команды, такие как truncate, могут вызывать проблемы. В случае, если вам нужно обрезать файл журнала, вы можете сделать это следующим образом:

$outchannel mysyslog,/var/log/syslog,1048576,/usr/bin/truncate -s 1M /var/log/syslog
*.*;auth,authpriv.none :omfile:$mysyslog

Это обеспечит обрезку файла журнала до 1 МБ, если он превысит этот размер.

6. Альтернативные методы управления журналами

Во избежание проблем, связанных с правами доступа, можно рассмотреть использование стандартного утилита logrotate, которая лучше подходит для управления размером файлов журналов. Настройте logrotate для работы с /var/log/syslog, чтобы упростить процесс ротации и управления размерами файлов.

Заключение

Установка лимита на размер файла syslog с помощью rsyslog может потребовать тщательной настройки и понимания привилегий пользователей. Следуйте приведенным рекомендациям, чтобы избежать распространенных ошибок и обеспечить эффективное управление вашими журналами. Не забывайте тестировать настройки в безопасной среде, чтобы избежать потери критической информации.

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

Оцените материал
Добавить комментарий

Капча загружается...