Linux: постоянное хранение логов в systemd-journald

Автор: | 09/25/2019
 

Имеется AWS EC2, который внезапно перезагрузился.

Проблема заключается в том, что файл /var/log/messages неполный, последняя запись в нём — о том, что rsyslog был убит. Но вот кем и как — непонятно.

Была надежда увидеть логи в journald, но — сюприз: по умолчанию journald хранит только записи о последней загрузке:

root@bttrm-stage-console:/home/admin# journalctl --list-boots
0 f527010076a141c5917496c6aa03438a Tue 2019-09-24 12:13:02 EEST—Tue 2019-09-24 17:48:44 EEST

Собственно, надо включить хранение логов и в journald при перезагрузках сервера.

Файл настроек — /etc/systemd/journald.conf.

Для того, что бы логи хранились постоянно — задаём Storage в auto или persistent.

При auto потребуется создать каталог /var/run/journal вручную, при persistentsystemd создаст его сам.

Обновляем конфиг, задаём persistent, перезагружаем systemd-journald:

root@bttrm-stage-console:/home/admin# systemctl restart systemd-journald

Проверяем каталог:

root@bttrm-stage-console:/home/admin# ll /var/log/journal/
total 4
drwxr-xr-x 2 root root 4096 Sep 24 17:54 7066493f616c4a6285c19cfaa2884b09
root@bttrm-stage-console:/home/admin# ll /var/log/journal/7066493f616c4a6285c19cfaa2884b09/
total 57348
-rw-r----- 1 root root 58720256 Sep 24 17:54 system.journal

Ребутаем машинку, проверяем доступные логи ещё раз:

root@bttrm-stage-console:/home/admin# journalctl --list-boots
-1 f527010076a141c5917496c6aa03438a Tue 2019-09-24 12:13:02 EEST—Tue 2019-09-24 17:56:19 EEST
0 591136b94276490580f4e39e576e639e Tue 2019-09-24 17:56:20 EEST—Tue 2019-09-24 17:56:41 EEST

И теперь можно просмотреть предыдущий ребут:

root@bttrm-stage-console:/home/admin# journalctl -b -1
-- Logs begin at Tue 2019-09-24 12:13:02 EEST, end at Tue 2019-09-24 17:57:36 EEST. --
Sep 24 12:13:02 bttrm-stage-console CRON[19407]: pam_unix(cron:session): session closed for user me-v3

Лимиты размеров задаются через SystemMaxUse, см. документацию.

Готово.