Менеджер логов
Назначение
Section titled “Назначение”Менеджер логов V0.1 (Log_manager.sh) — консольная программа с меню для управления системными логами Astra Linux. Она позволяет ограничивать рост логов на корневом разделе без отключения журналирования и без создания отдельного раздела /var/log.
Менеджер настраивает рабочий скрипт astra-log-size-guard, который выполняет очистку по расписанию через таймер systemd. Перенос логов на /storage — отдельная, необязательная операция.
Файлы и требования
Section titled “Файлы и требования”Откройте папку Log_manager и скачайте Log_manager.sh — файл для установки и запуска.
Для работы нужны Astra Linux, bash, systemd и права администратора (sudo/root). Установка dialog необязательна: менеджер полноценно работает со встроенным whiptail. Если dialog отсутствует, скрипт автоматически использует whiptail.
rsync требуется только для переноса логов на /storage — пункта 2 меню. Для установки пакетов без интернета используйте инструкцию подключения ISO.
1. Разместите и запустите скрипт
Section titled “1. Разместите и запустите скрипт”Скачайте Log_manager.sh из папки по ссылке выше и разместите на сервере, например в домашнем каталоге: ~/Log_manager.sh. Откройте терминал в каталоге со скриптом.
Если файл редактировали или копировали из Windows, исправьте переводы строк CRLF:
sed -i 's/\r$//' Log_manager.shВыдайте право на выполнение и запустите:
chmod +x Log_manager.shsudo ./Log_manager.shУправление меню: стрелки — выбрать пункт, Tab — перейти между элементами, Enter — подтвердить, Esc — отменить или выйти. Длинные отчёты прокручиваются стрелками и PgUp/PgDn.

Рисунок 1 — Главное меню менеджера логов.
Какой пункт меню выбрать
Section titled “Какой пункт меню выбрать”Номера шагов статьи и пунктов программы различаются. При выборе действия в программе пользуйтесь этой таблицей:
| Пункт меню | Название | Для чего выбрать |
|---|---|---|
| 1 | Проверка занятого места и конфигурации | Посмотреть состояние логов и настройки без изменений |
| 2 | Перенос логов на /storage | При необходимости перенести логи в окно обслуживания |
| 3 | Создание/обновление скрипта очистки | Задать или изменить лимиты и расписание |
| 4 | Запустить скрипт очистки сейчас | Выполнить очистку и посмотреть результат «до/после» |
| 5 | ОЗУ | Посмотреть использование памяти без изменений |
| 6 | Выход | Закрыть меню |
Для первичной настройки используйте пункты 1 → 3 → 4 → 1. Если нужен перенос логов, после очистки выполните также пункт 2. Ниже описан этот порядок работы.
2. Проверьте текущее состояние
Section titled “2. Проверьте текущее состояние”Выберите пункт 1 — «Проверка занятого места и конфигурации». Он показывает состояние системы без изменений:
- свободное место на
/и, при наличии,/storage; - общий размер
/var/logи 20 крупнейших его подкаталогов; - размер журнала journald;
- настройки лимитов, journald и logrotate;
- состояние таймера guard и старого cron-файла, если он остался;
- монтирование
/var/log, запись вfstabи основные параметры auditd.

Рисунок 2 — Отчёт о занятом месте и состоянии логов.
Просмотрите отчёт, прокручивая его стрелками или PgUp/PgDn. Для закрытия окна выберите «ОК».
3. Настройте автоматическую очистку
Section titled “3. Настройте автоматическую очистку”Выберите пункт 3 — «Создание/обновление скрипта очистки». Менеджер последовательно запросит четыре параметра и проверит формат ввода. Начальные значения:
| Настройка | По умолчанию | Что означает |
|---|---|---|
Общий лимит /var/log — TOTAL_LIMIT_MB | 1536 МБ | Контрольный порог общего размера логов |
Лимит journald — JOURNAL_LIMIT_MB | 1024 МБ | Настройка размера журнала на диске (SystemMaxUse) |
Порог logrotate — LOGROTATE_MAXSIZE | 128M | Порог размера отдельного лог-файла для ротации при запуске logrotate |
Интервал проверки — CRON_MINUTES | 1440 мин, сутки | Интервал запуска guard таймером systemd |
Для корневого раздела 40 ГБ можно использовать более строгий профиль: общий лимит 1024 МБ, journald 512 МБ, logrotate 64M, интервал 60 минут. Выберите один набор значений: по умолчанию или этот более строгий профиль. Порог logrotate вводится с единицей размера, например 64M, 128M или 1G.
Окна ввода параметров
Section titled “Окна ввода параметров”Введите значения последовательно. После каждого поля выберите «ОК» для перехода к следующему.

Рисунок 3 — Общий лимит /var/log в мегабайтах.

Рисунок 4 — Лимит journald на диске в мегабайтах.

Рисунок 5 — Порог ротации logrotate.

Рисунок 6 — Интервал проверки в минутах.
В окне применения сверьте все четыре значения. Выберите «Да», чтобы применить настройки.

Рисунок 7 — Подтверждение выбранных лимитов и интервала.
После подтверждения менеджер выполнит следующие действия:
- Запишет
/etc/astra-log-limit.conf. - Создаст настройки journald, перезапустит journald и выполнит
--rotateи--vacuum-size. Ограничения применяются уже на этом этапе. - Запишет правила logrotate.
- Создаст или перезапишет
/usr/local/sbin/astra-log-size-guard. - Установит таймер systemd и удалит устаревший cron-файл. Guard запускается через 5 минут после загрузки, затем каждые заданные N минут.
Затем ответьте на необязательные предложения: ограничить auditd (с резервной копией его конфигурации) и запустить guard немедленно. После завершения появится окно «Готово».
Если включаете настройку auditd: по руководству устанавливается disk_full_action = SUSPEND — при заполнении диска аудит приостанавливается.
Общий лимит — контрольный порог, а не жёсткая квота. Между проверками размер /var/log может временно его превышать.
4. Запустите очистку и сравните результат
Section titled “4. Запустите очистку и сравните результат”Выберите пункт 4 — «Запустить скрипт очистки сейчас». Если рабочий скрипт ещё не создан, сначала выполните пункт 3 меню.
Программа соберёт показатели «ДО», выполнит очистку и покажет «ПОСЛЕ»:
- размер
/var/logи journald; - свободное место на
/и/storage; - использование ОЗУ и swap;
- сколько мегабайт освобождено или добавилось;
- код завершения guard и последние строки его лога.
Проверьте итоговое сообщение. Если появилось предупреждение «выше лимита», найдите причину по таблице в разделе «Возможные проблемы».
5. При необходимости перенесите логи на /storage
Section titled “5. При необходимости перенесите логи на /storage”Этот шаг необязателен и выполняется в окно обслуживания. Подготовьте /storage по инструкции добавления разделов. Для переноса нужен rsync. В руководстве предусмотрено локальное монтирование массива; NFS/CIFS для системных логов не рекомендуются.
Выберите пункт 2 — «Перенос логов на /storage». Менеджер проверит наличие /storage, rsync и то, что /var/log ещё не перенесён.
Подтвердите перенос
Section titled “Подтвердите перенос”В окне «Перенос» выберите «Да», чтобы продолжить. Менеджер создаст /storage/varlog и проверит возможность записи.

Рисунок 8 — Подтверждение переноса логов в /storage/varlog.
Проверьте предупреждения
Section titled “Проверьте предупреждения”Если /storage существует, но не является отдельной смонтированной файловой системой, появится предупреждение: перенос может не освободить место на корневом разделе. Проверьте подключение массива к /storage; сам по себе каталог с таким именем ещё не означает отдельное хранилище.

Рисунок 9 — Предупреждение: /storage не является отдельной смонтированной файловой системой.
Далее менеджер копирует /var/log в /storage/varlog через rsync -aHAXS --numeric-ids, с отображением прогресса. Он сохраняет резервную копию /etc/fstab и добавляет запись bind-монтирования: каталог /storage/varlog будет доступен по прежнему пути /var/log.
Если запись для /var/log в /etc/fstab уже есть, программа попросит проверить её вручную. Это отдельное сообщение, не подтверждение успешного переноса.

Рисунок 10 — Сообщение о существующей записи для /var/log в fstab.
Выберите момент переключения
Section titled “Выберите момент переключения”На предложение «Переключить /var/log на /storage/varlog сейчас?» ответьте:
- «Да» — программа остановит rsyslog, auditd и таймер, выполнит финальную синхронизацию, переименует старый каталог в
/var/log.pre-move-<дата>, подключит новый и запустит службы. По руководству при сбое предусмотрен автоматический откат. - «Нет» — останутся подготовленная копия и запись в
fstab. Переключение можно выполнить позже, в окно обслуживания. Учтите подготовленную запись при планировании следующей перезагрузки.

Рисунок 11 — Предложение переключить /var/log на новое хранилище сейчас.
После успешного переключения появится сообщение с путём сохранённых старых логов. Имя каталога включает дату и время вашей операции; не копируйте имя со скриншота.

Рисунок 12 — Переключение завершено: указан каталог со старыми логами.
Менеджер предложит перезагрузить ПК. После перезагрузки проверьте, что /var/log подключён и службы записывают логи.
Только после проверки удалите старую копию. В исходном руководстве приведена команда:
sudo rm -rf /var/log.pre-move-*Она удаляет все каталоги, подходящие под этот шаблон. Перед выполнением убедитесь, что они больше не нужны для возврата к прежнему размещению логов.
6. Выполните контрольную проверку
Section titled “6. Выполните контрольную проверку”Снова откройте пункт 1 и проверьте, что таймер активен, а конфигурационные файлы созданы. Это завершает первичную настройку.
Для отдельной диагностики памяти используйте пункт 5 — «ОЗУ». Он показывает free -h, 10 процессов с наибольшим потреблением RAM (RSS, МБ), swap-устройства и размер /run/log/journal, не меняя настройки.
Завершите работу через пункт 6 — «Выход» или Esc в главном меню.
Дополнительно можно проверить работу командами из руководства:
sudo systemctl list-timers astra-log-size-guard.timersudo journalctl -u astra-log-size-guard.servicesudo tail -n 50 /var/log/astra-log-size-guard.logsudo du -xsh /var/log && sudo journalctl --disk-usageКоманды показывают расписание, журнал запусков, собственный лог очистки и текущие размеры. Лог утилиты ротируется отдельным правилом: 10 МБ, 2 копии.
Как изменить лимиты
Section titled “Как изменить лимиты”Снова выполните пункт 3 меню. Он обновит конфигурацию, настройки journald и logrotate, а также пересоздаст таймер с новым интервалом.
Ручная правка /etc/astra-log-limit.conf влияет только на guard. Чтобы согласованно изменить лимиты journald, logrotate и расписание, используйте меню.
Возможные проблемы
Section titled “Возможные проблемы”| Симптом | Что сделать |
|---|---|
Ошибка /usr/bin/env: bash\r: Нет такого файла | Исправьте переводы строк командой sed из шага 1. |
Не найдены ни dialog, ни whiptail | Установите один из пакетов, например командой sudo apt install dialog. Если whiptail уже доступен, установка dialog не требуется. |
Пункт 2 сообщает, что /storage отсутствует | Проверьте подключение массива командой findmnt /storage, подключите его и повторите операцию. |
| Отчёт не помещается в окне | Прокручивайте стрелками или PgUp/PgDn. В руководстве также предлагается увеличить размеры окна в функции show_file (значения 22 88). |
| Guard вернул код 1 | Размер /var/log остался выше лимита. Найдите источник чрезмерной записи командой du -xh --max-depth=1 /var/log, уменьшите детализацию логирования соответствующей службы или увеличьте лимит. |
| После переноса логи не пишутся | Проверьте findmnt /var/log, systemctl status rsyslog, journalctl -p err -b. |
| Нужно отменить перенос | В окно обслуживания уберите только добавленную запись bind-монтирования /var/log из /etc/fstab, отключите монтирование (umount /var/log), верните сохранённый каталог /var/log.pre-move-<дата> на место и перезагрузите машину. Сохраните новые логи перед заменой каталога. |
Справочная информация
Section titled “Справочная информация”Как работает очистка
Скрипт очистки выполняет следующий цикл:
- Запускает logrotate для ротации логов по размеру.
- Выполняет
journalctl --rotateи--vacuum-sizeдля сокращения архивного журнала до заданного объёма. - Если
/var/logвышеTOTAL_LIMIT_MB, удаляет самые старые ротированные архивы (*.gz,*.1,*.oldи другие). - Если этого недостаточно, выполняет принудительный проход:
logrotate -fи vacuum до100M. - Записывает результат в
/var/log/astra-log-size-guard.log.
Одновременные запуски блокируются через flock. Активные файлы логов напрямую не удаляются; очистке подлежат старые архивы. rsyslog и journald продолжают журналирование.
Какие системные файлы создаются или изменяются
| Путь | Назначение |
|---|---|
/etc/astra-log-limit.conf | Пороги и интервал для guard |
/etc/systemd/journald.conf.d/99-astra-log-limit.conf | Лимиты journald |
/etc/logrotate.d/000-astra-maxsize | Общий порог размера для logrotate |
/etc/logrotate.d/astra-log-size-guard | Ротация лога утилиты |
/usr/local/sbin/astra-log-size-guard | Рабочий скрипт очистки |
/etc/systemd/system/astra-log-size-guard.service | Служба запуска guard |
/etc/systemd/system/astra-log-size-guard.timer | Расписание запуска |
/etc/audit/auditd.conf | Лимиты аудита, если выбрана их настройка |
/etc/fstab | Bind-монтирование при переносе на /storage |
В руководстве указаны резервные копии /etc/fstab.bak.<дата> и /etc/audit/auditd.conf.astra-log-limit.bak для соответствующих операций.
Удаление утилиты
Section titled “Удаление утилиты”Отключение таймера и удаление компонентов
Следующие команды отключают таймер и удаляют созданные компоненты:
sudo systemctl disable --now astra-log-size-guard.timersudo rm -f /etc/systemd/system/astra-log-size-guard.service \ /etc/systemd/system/astra-log-size-guard.timersudo systemctl daemon-reloadsudo rm -f /usr/local/sbin/astra-log-size-guardsudo rm -f /etc/astra-log-limit.confsudo rm -f /etc/logrotate.d/000-astra-maxsize \ /etc/logrotate.d/astra-log-size-guardsudo rm -f /etc/systemd/journald.conf.d/99-astra-log-limit.confsudo systemctl restart systemd-journaldЕсли менялись настройки auditd, при необходимости восстановите auditd.conf из резервной копии. Удаление утилиты само по себе не отменяет перенос логов: возврат /var/log выполняйте по строке «Нужно отменить перенос» выше, а не одним удалением записи из fstab.
Дополнительно: установка dialog (необязательно)
Section titled “Дополнительно: установка dialog (необязательно)”При желании можно установить dialog как альтернативный интерфейс меню. Для работы менеджера со встроенным whiptail этот шаг не нужен.
sudo apt install dialogДля установки без интернета используйте инструкцию подключения ISO.