Skip to content

Менеджер логов

Менеджер логов V0.1 (Log_manager.sh) — консольная программа с меню для управления системными логами Astra Linux. Она позволяет ограничивать рост логов на корневом разделе без отключения журналирования и без создания отдельного раздела /var/log.

Менеджер настраивает рабочий скрипт astra-log-size-guard, который выполняет очистку по расписанию через таймер systemd. Перенос логов на /storage — отдельная, необязательная операция.

Откройте папку 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:

Terminal window
sed -i 's/\r$//' Log_manager.sh

Выдайте право на выполнение и запустите:

Terminal window
chmod +x Log_manager.sh
sudo ./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_MB1536 МБКонтрольный порог общего размера логов
Лимит journald — JOURNAL_LIMIT_MB1024 МБНастройка размера журнала на диске (SystemMaxUse)
Порог logrotate — LOGROTATE_MAXSIZE128MПорог размера отдельного лог-файла для ротации при запуске logrotate
Интервал проверки — CRON_MINUTES1440 мин, суткиИнтервал запуска guard таймером systemd

Для корневого раздела 40 ГБ можно использовать более строгий профиль: общий лимит 1024 МБ, journald 512 МБ, logrotate 64M, интервал 60 минут. Выберите один набор значений: по умолчанию или этот более строгий профиль. Порог logrotate вводится с единицей размера, например 64M, 128M или 1G.

Введите значения последовательно. После каждого поля выберите «ОК» для перехода к следующему.

Общий лимит /var/log в мегабайтах

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

Лимит journald на диске в мегабайтах

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

Порог ротации logrotate

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

Интервал проверки в минутах

Рисунок 6 — Интервал проверки в минутах.

В окне применения сверьте все четыре значения. Выберите «Да», чтобы применить настройки.

Подтверждение выбранных лимитов и интервала

Рисунок 7 — Подтверждение выбранных лимитов и интервала.

После подтверждения менеджер выполнит следующие действия:

  1. Запишет /etc/astra-log-limit.conf.
  2. Создаст настройки journald, перезапустит journald и выполнит --rotate и --vacuum-size. Ограничения применяются уже на этом этапе.
  3. Запишет правила logrotate.
  4. Создаст или перезапишет /usr/local/sbin/astra-log-size-guard.
  5. Установит таймер 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 ещё не перенесён.

В окне «Перенос» выберите «Да», чтобы продолжить. Менеджер создаст /storage/varlog и проверит возможность записи.

Подтверждение переноса логов в /storage/varlog

Рисунок 8 — Подтверждение переноса логов в /storage/varlog.

Проверьте предупреждения

Section titled “Проверьте предупреждения”

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

Предупреждение: /storage не является отдельной смонтированной файловой системой

Рисунок 9 — Предупреждение: /storage не является отдельной смонтированной файловой системой.

Далее менеджер копирует /var/log в /storage/varlog через rsync -aHAXS --numeric-ids, с отображением прогресса. Он сохраняет резервную копию /etc/fstab и добавляет запись bind-монтирования: каталог /storage/varlog будет доступен по прежнему пути /var/log.

Если запись для /var/log в /etc/fstab уже есть, программа попросит проверить её вручную. Это отдельное сообщение, не подтверждение успешного переноса.

Сообщение о существующей записи для /var/log в fstab

Рисунок 10 — Сообщение о существующей записи для /var/log в fstab.

Выберите момент переключения

Section titled “Выберите момент переключения”

На предложение «Переключить /var/log на /storage/varlog сейчас?» ответьте:

  • «Да» — программа остановит rsyslog, auditd и таймер, выполнит финальную синхронизацию, переименует старый каталог в /var/log.pre-move-<дата>, подключит новый и запустит службы. По руководству при сбое предусмотрен автоматический откат.
  • «Нет» — останутся подготовленная копия и запись в fstab. Переключение можно выполнить позже, в окно обслуживания. Учтите подготовленную запись при планировании следующей перезагрузки.

Предложение переключить /var/log на новое хранилище сейчас

Рисунок 11 — Предложение переключить /var/log на новое хранилище сейчас.

После успешного переключения появится сообщение с путём сохранённых старых логов. Имя каталога включает дату и время вашей операции; не копируйте имя со скриншота.

Переключение завершено: указан каталог со старыми логами

Рисунок 12 — Переключение завершено: указан каталог со старыми логами.

Менеджер предложит перезагрузить ПК. После перезагрузки проверьте, что /var/log подключён и службы записывают логи.

Только после проверки удалите старую копию. В исходном руководстве приведена команда:

Terminal window
sudo rm -rf /var/log.pre-move-*

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

6. Выполните контрольную проверку

Section titled “6. Выполните контрольную проверку”

Снова откройте пункт 1 и проверьте, что таймер активен, а конфигурационные файлы созданы. Это завершает первичную настройку.

Для отдельной диагностики памяти используйте пункт 5 — «ОЗУ». Он показывает free -h, 10 процессов с наибольшим потреблением RAM (RSS, МБ), swap-устройства и размер /run/log/journal, не меняя настройки.

Завершите работу через пункт 6 — «Выход» или Esc в главном меню.

Дополнительно можно проверить работу командами из руководства:

Terminal window
sudo systemctl list-timers astra-log-size-guard.timer
sudo journalctl -u astra-log-size-guard.service
sudo tail -n 50 /var/log/astra-log-size-guard.log
sudo du -xsh /var/log && sudo journalctl --disk-usage

Команды показывают расписание, журнал запусков, собственный лог очистки и текущие размеры. Лог утилиты ротируется отдельным правилом: 10 МБ, 2 копии.

Снова выполните пункт 3 меню. Он обновит конфигурацию, настройки journald и logrotate, а также пересоздаст таймер с новым интервалом.

Ручная правка /etc/astra-log-limit.conf влияет только на guard. Чтобы согласованно изменить лимиты journald, logrotate и расписание, используйте меню.

СимптомЧто сделать
Ошибка /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-<дата> на место и перезагрузите машину. Сохраните новые логи перед заменой каталога.
Как работает очистка

Скрипт очистки выполняет следующий цикл:

  1. Запускает logrotate для ротации логов по размеру.
  2. Выполняет journalctl --rotate и --vacuum-size для сокращения архивного журнала до заданного объёма.
  3. Если /var/log выше TOTAL_LIMIT_MB, удаляет самые старые ротированные архивы (*.gz, *.1, *.old и другие).
  4. Если этого недостаточно, выполняет принудительный проход: logrotate -f и vacuum до 100M.
  5. Записывает результат в /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/fstabBind-монтирование при переносе на /storage

В руководстве указаны резервные копии /etc/fstab.bak.<дата> и /etc/audit/auditd.conf.astra-log-limit.bak для соответствующих операций.

Отключение таймера и удаление компонентов

Следующие команды отключают таймер и удаляют созданные компоненты:

Terminal window
sudo systemctl disable --now astra-log-size-guard.timer
sudo rm -f /etc/systemd/system/astra-log-size-guard.service \
/etc/systemd/system/astra-log-size-guard.timer
sudo systemctl daemon-reload
sudo rm -f /usr/local/sbin/astra-log-size-guard
sudo rm -f /etc/astra-log-limit.conf
sudo rm -f /etc/logrotate.d/000-astra-maxsize \
/etc/logrotate.d/astra-log-size-guard
sudo rm -f /etc/systemd/journald.conf.d/99-astra-log-limit.conf
sudo systemctl restart systemd-journald

Если менялись настройки auditd, при необходимости восстановите auditd.conf из резервной копии. Удаление утилиты само по себе не отменяет перенос логов: возврат /var/log выполняйте по строке «Нужно отменить перенос» выше, а не одним удалением записи из fstab.

Дополнительно: установка dialog (необязательно)

Section titled “Дополнительно: установка dialog (необязательно)”

При желании можно установить dialog как альтернативный интерфейс меню. Для работы менеджера со встроенным whiptail этот шаг не нужен.

Terminal window
sudo apt install dialog

Для установки без интернета используйте инструкцию подключения ISO.

К разделу Astra Linux