Настройка ротации логов systemd-journald
Ротация логов systemd-journald настраивается через параметры journald.conf. Основные ограничения задаются объёмом на диске, максимальным размером журналов и временем хранения. После изменения конфигурации нужно перезапустить службу и проверить фактическое состояние журнала через journalctl.
Проверка текущей конфигурации и режима хранения
Сначала определите, где journald хранит данные. Если включено постоянное хранение, журналы находятся в каталоге /var/log/journal. При отсутствии постоянного каталога systemd-journald может хранить данные только в оперативной памяти.
journalctl --disk-usage
Команда показывает текущий объём, занимаемый журналами. Также полезно проверить активные параметры службы:
systemctl status systemd-journald
Конфигурация journald читается из нескольких мест. Основной пользовательский файл обычно создают как отдельный фрагмент в каталоге /etc/systemd, чтобы не изменять файл из пакета системы.
ls -la /etc/systemd/journald.conf /etc/systemd/journald.conf.d/
Для просмотра эффективной конфигурации можно использовать:
systemd-analyze cat-config systemd/journald.conf
Поддержка этой команды зависит от версии systemd, установленной в конкретном дистрибутиве. Если команда недоступна, проверяйте параметры непосредственно в используемых конфигурационных файлах.
Не удаляйте файлы журналов вручную из каталога хранения journald во время работы службы. Для освобождения места используйте штатные команды
journalctlили параметры конфигурации.
Создание конфигурации ограничения размера логов
Создайте каталог для дополнительной конфигурации:
mkdir -p /etc/systemd/journald.conf.d
Создайте файл, например:
nano /etc/systemd/journald.conf.d/10-storage.conf
Пример настроек:
[Journal]
Storage=persistent
SystemMaxUse=1G
SystemKeepFree=500M
MaxRetentionSec=1month
Параметр Storage=persistent включает хранение системных журналов на диске. SystemMaxUse ограничивает максимальный размер файлов журнала, а SystemKeepFree резервирует свободное место на файловой системе. MaxRetentionSec задаёт максимальное время хранения журналов.
Значения нужно выбирать с учётом назначения сервера. Например, для небольшого виртуального сервера лимит в несколько сотен мегабайт может быть достаточным, а для систем с аудитом и большим количеством событий потребуется больше места.
Применение изменений
После изменения конфигурации перезапустите journald:
systemctl restart systemd-journald
Проверьте, что служба работает:
systemctl is-active systemd-journald
После этого снова проверьте использование диска:
journalctl --disk-usage
Если требуется немедленно уменьшить размер журнала до заданного значения, можно использовать штатную очистку:
journalctl --vacuum-size=500M
Также доступна очистка по времени:
journalctl --vacuum-time=1month
Эти команды удаляют старые архивные журналы, чтобы освободить место. Они не заменяют постоянную настройку лимитов в journald.conf.
Включение постоянного хранения журналов
Если сервер должен сохранять логи после перезагрузки, проверьте наличие каталога для постоянного журнала:
ls -ld /var/log/journal
Если каталога нет, его можно создать:
mkdir -p /var/log/journal
systemctl restart systemd-journald
После этого проверьте размещение данных:
journalctl --list-boots
Список загрузок позволяет убедиться, что журналы предыдущих запусков системы доступны.
Настройка автоматического контроля через systemd
systemd-journald самостоятельно управляет архивированием и удалением журналов при достижении заданных ограничений. Отдельный cron или systemd timer для обычной ротации journald не требуется.
При эксплуатации сервера важно контролировать не только размер журналов, но и свободное место на файловой системе:
df -h /var/log
Если логи продолжают быстро расти, ограничение размера не устраняет причину. Следует определить источник большого количества сообщений:
journalctl -p warning..alert
journalctl --since "1 hour ago"
Первая команда показывает сообщения с уровнем от warning до alert, вторая ограничивает просмотр последним часом. Конкретный набор уровней и фильтров зависит от задачи диагностики.
Типовые ограничения и особенности
| Ситуация | Что проверить |
|---|---|
| Диск быстро заполняется | Размер журнала через journalctl --disk-usage и источник большого количества сообщений |
| Логи исчезают после перезагрузки | Наличие постоянного хранения и каталога /var/log/journal |
| Изменения конфигурации не применились | Корректность файла в /etc/systemd/journald.conf.d/ и перезапуск службы |
| Нужно сохранить логи дольше | Значения SystemMaxUse и MaxRetentionSec |
Проверка результата после настройки
- Проверьте текущий размер журналов командой
journalctl --disk-usage. - Убедитесь, что файл конфигурации находится в каталоге
/etc/systemd/journald.conf.d/. - Перезапустите
systemd-journald. - Проверьте состояние службы через
systemctl is-active systemd-journald. - Проверьте, что ограничения применяются и свободное место на диске контролируется.