Перейти к основному содержимому

Приложение 2. Настройка журналирования

Рекомендации по настройке Journald

Одно из преимуществ Journald - возможность ограничивать поток сообщений для хранения. Этот механизм защищает файловую систему сервера от переполнения, т.е. обеспечивает работоспособность. Иногда есть необходимость корректировки конфигурации по умолчанию для параметров RateLimitInterval и RateLimitBurst.

Хранение журнальных записей производится в binary-формате, что позволяет существенно снизить объем и обеспечить высокую скорость доступа.
Расположение журнальных файлов зависит от параметра конфигурации Storage, но фактически это 2 варианта.

  1. Хранение в памяти - /run/log/journal:
  • Stоrage=auto при отсутствии директории /var/log/journal (по умолчанию)
  • Storage=volatile
  1. Хранение в файловой системе - `/var/log/journal:
  • Storage=auto при существовании директории /var/log/journal
  • Storage=persistent

Рекомендации по хранению журнальных записей

  1. Хранение журнальных записей в файловом виде в папке файловой системы /var/log/journal/.
  2. Обеспечение необходимого дискового пространства для хранения журналов на срок не менее 7 дней, желательно до 30 дней.

При необходимости создайте дополнительное дисковое устройство для точки монтирования /var/log/journal/.

  1. Минимальная конфигурация, конфигурационный файл /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
  1. Проверить существование папки в файловой системе, при необходимости создать и выполнить перезапуск сервиса журнальных файлов:
[[ -d /var/log/journal ]] && \
( sudo mkdir -p /var/log/journal && sudo systemctl restart systemd-journald)

Проверка текущей конфигурации

  1. Выполняем проверку режима работы 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 в статусе означает использование дисковой подсистемы. Т.е. после перезагрузки или аварийного отключения хоста журналы сохранятся.

  1. Проверка доступного дискового пространства для хранения журнальных записей:
df -h

Проверьте, достаточно ли места на файловой системе, содержащей папку /var/log/journal/.

  1. Проверка корректности конфигурационных параметров.

Наличие сообщений в журнальном файле 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