♻️ Ротация логов встроенными средствами (без logrotate)

В Astra Linux и Red OS можно управлять логами полностью штатными средствами,
без использования logrotate.
Основой является системный компонент systemd-journald,
который автоматически собирает, хранит, сжимает и очищает логи системы.


📑 Содержание


🧩 1️⃣ Что такое systemd-journald

systemd-journald — это системный демон, который:


📂 2️⃣ Где хранятся логи

Тип хранилища Путь Описание
В памяти (по умолчанию) /run/log/journal/ очищается при перезагрузке
На диске (persistent) /var/log/journal/ сохраняется между перезагрузками

Постоянное хранение включается параметром:

sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald

♻️ 3️⃣ Управление ротацией и хранением

Ротация и очистка логов в journald осуществляется автоматически, на основе параметров из файла /etc/systemd/journald.conf.

Основные механизмы:


⚙️ 4️⃣ Настройка journald.conf (практика)

Открой файл конфигурации:

sudo nano /etc/systemd/journald.conf

Пример конфигурации для постоянного хранения логов:

[Journal]
Storage=persistent         # хранить логи на диске
Compress=yes               # сжимать старые записи
Seal=yes                   # защита от подмены
SplitMode=uid              # разделять логи по пользователям
SystemMaxUse=2G            # общий лимит для логов
SystemKeepFree=1G          # оставлять свободное место
SystemMaxFileSize=200M     # максимальный размер одного файла
RuntimeMaxUse=256M         # ограничение для логов в памяти
MaxRetentionSec=3month     # хранить 3 месяца
ForwardToSyslog=yes        # дублировать в rsyslog (если включен)

Применить изменения:

sudo systemctl restart systemd-journald

Проверить состояние службы:

systemctl status systemd-journald

🧹 5️⃣ Очистка и ручное управление логами

Проверить объём занимаемого места:

sudo journalctl --disk-usage

Удалить логи старше 14 дней:

sudo journalctl --vacuum-time=14d

Удалить логи, если общий объём превышает 500 МБ:

sudo journalctl --vacuum-size=500M

Принудительно выполнить ротацию журнала:

sudo journalctl --rotate

Полностью очистить журнал (осторожно!):

sudo journalctl --rotate
sudo journalctl --vacuum-time=1s

🔍 6️⃣ Проверка текущего состояния журнала

Сколько логов сохранено:

sudo journalctl --disk-usage

Последние записи:

sudo journalctl -n 20

По конкретной службе:

sudo journalctl -u ssh.service

По времени:

sudo journalctl --since "2025-10-01" --until "2025-10-07"

Только ошибки:

sudo journalctl -p err -b

🏢 7️⃣ Настройки для production-серверов

Рекомендуемая конфигурация для серверов Astra / Red OS:

[Journal]
Storage=persistent
Compress=yes
SystemMaxUse=2G
SystemKeepFree=1G
SystemMaxFileSize=200M
RuntimeMaxUse=256M
MaxRetentionSec=1month
ForwardToSyslog=yes

🧠 8️⃣ Дополнительные команды для анализа

Задача Команда
Просмотреть логи ядра sudo journalctl -k
Только ошибки sudo journalctl -p err
Сессия текущего запуска sudo journalctl -b
Предыдущий запуск sudo journalctl -b -1
По пользователю sudo journalctl _UID=1000
По process ID sudo journalctl _PID=1234
По unit (службе) sudo journalctl -u nginx
Вывести в реальном времени sudo journalctl -f

💡 9️⃣ Советы и лучшие практики

Проверяй размер журналов регулярно

du -sh /var/log/journal
journalctl --disk-usage

Используй SystemKeepFree — оставляй запас свободного места на системном разделе. Это защищает систему от переполнения /var.

Настраивай MaxRetentionSec по требованиям безопасности (обычно 30–90 дней).

Для систем без rsyslog достаточно journald — он уже покрывает все функции системного журналирования и ротации.

Не удаляй файлы вручную из /var/log/journal/, используй только journalctl --vacuum-* — иначе база journald может повредиться.

В Astra Linux SE каталог /var/log/journal может быть отключён по политике — если логи не сохраняются, проверь параметр Storage= в конфиге.


🧩 Итог

🔹 В Astra Linux и Red OS встроенная система systemd-journald полностью заменяет внешние утилиты для ротации логов. 🔹 Все операции (сжатие, очистка, ограничение по размеру и времени) выполняются автоматически. 🔹 Настраивается всё в одном файле /etc/systemd/journald.conf. 🔹 Не требует установки logrotate или сторонних скриптов.

💡 Это безопасный и надёжный способ управления логами, рекомендованный для защищённых систем.