Приложение 2. Настройка журналирования
Рекомендации по настройке Journald
Одно из преимуществ Journald - возможность ограничивать поток сообщений для хранения. Этот механизм защищает файловую систему сервера от переполнения, т.е. обеспечивает работоспособность. Иногда есть необходимость корректировки конфигурации по умолчанию для параметров RateLimitInterval
и RateLimitBurst
.
Хранение журнальных записей производится в binary-формате, что позволяет существенно снизить объем и обеспечить высокую скорость доступа.
Расположение журнальных файлов зависит от параметра конфигурации Storage, но фактически это 2 варианта.
- Хранение в памяти -
/run/log/journal
:
Stоrage=auto
при отсутствии директории/var/log/journal
(по умолчанию)Storage=volatile
- Хранение в файловой системе - `/var/log/journal:
Storage=auto
при существовании директории/var/log/journal
Storage=persistent
Рекомендации по хранению журнальных записей
- Хранение журнальных записей в файловом виде в папке файловой системы
/var/log/journal/
. - Обеспечение необходимого дискового пространства для хранения журналов на срок не менее 7 дней, желательно до 30 дней.
При необходимости создайте дополнительное дисковое устройство для точки монтирования /var/log/journal/
.
- Минимальная конфигурация, конфигурационный файл
/etc/systemd/journald.conf
:
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
RateLimitInterval=1
RateLimitBurst=10000
#SystemMaxUse=
SystemKeepFree=20
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
- Проверить существование папки в файловой системе, при необходимости создать и выполнить перезапуск сервиса журнальных файлов:
[[ -d /var/log/journal ]] && \
( sudo mkdir -p /var/log/journal && sudo systemctl restart systemd-journald)
Проверка текущей конфигурации
- Выполняем проверку режима работы Journald:
systemctl status journald
Проверьте полученный статус. Строка Runtime journal is using
в статусе означает использование оперативной памяти для хранения журнальных записей. Т.е. после перезагрузки или аварийного отключения хоста журналы не сохранятся. Пример:
systemctl status systemd-journald
systemd-journald.service - Journal Service
Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset: disabled)
Active: active (running) since Thu 2020-11-19 21:01:43 MSK; 18s ago
Docs: man:systemd-journald.service(8)
man:journald.conf(5)
Main PID: 2671 (systemd-journal)
Status: "Processing requests..."
CGroup: /system.slice/systemd-journald.service
2671 /usr/lib/systemd/systemd-journald
Nov 19 21:01:43 localhost.localdomain systemd-journal[2671]: Runtime journal is using 8.0M (max allowed 91.9M, trying to leave 137.8M free of 910.5M available → current limit 91.9M).
Nov 19 21:01:43 localhost.localdomain systemd-journal[2671]: Journal started
Строка Permanent journal is using
в статусе означает использование дисковой подсистемы. Т.е. после перезагрузки или аварийного отключения хоста журналы сохранятся.
- Проверка доступного дискового пространства для хранения журнальных записей:
df -h
Проверьте, достаточно ли места на файловой системе, содержащей папку /var/log/journal/
.
- Проверка корректности конфигурационных параметров.
Наличие сообщений в журнальном файле Suppressed xxxx messages
говорит о недостаточном значении параметра RateLimitBurst в конфигурационном файле /etc/systemd/journald.conf
или о том, что приложение сконфигурировано неверно в части журналирования событий.
journalctl -u systemd-journald
-- Logs begin at Thu 2019-05-16 13:56:01 MSK, end at Thu 2020-11-19 22:42:04 MSK. --
Oct 28 08:26:01 rzd-skimn-d-app-1 systemd-journal[1580]: Suppressed 7894 messages from /system.slice/luxmsbi_appserver.service
Oct 28 08:27:01 rzd-skimn-d-app-1 systemd-journal[1580]: Suppressed 7894 messages from /system.slice/luxmsbi_appserver.service
Настройка учетных записей для просмотра журналов
При необходимости предоставления доступа на чтение к журналам приложений необходимо:
1) Для просмотра журнальных записей в системном журнале необходимо добавить учетную запись пользователя в группу systemd-journal:
usermod -aG systemd-journal username
2) Для просмотра журнальных записей в файлах:
usermod -aG bi username
Альтернативный вариант для более современных ОС
Операционные системы RHEL-based 7 (RedHat/CentOS/Oracle) Linux использует Systemd версии 219, которая не поддерживает расширенный функционал управления журнальными файлами. Начиная с версии Systemd 231, Journald поддерживает разделение потоков регистрации журнальных записей.
Например, для ОС CentOS 8 возможно настроить регистрацию событий для конкретного сервиса отдельным потоком, со своими ограничениями - Per unit size limit