Перейти до змісту

Керування журналами

Основний огляд

У цьому розділі ви дізнаєтеся, як керувати журналами в операційній системі.

Q: Що таке log (журнал)?

Log:Записує всі події та повідомлення, що відбуваються з моменту запуску операційної системи, включаючи журнали завантаження, журнали ініціалізації ядра, журнали ініціалізації systemd та журнали запуску або роботи програм. Журнал є однією з найважливіших функцій операційної системи. Адміністратори можуть запитувати журнали для усунення існуючих або майбутніх проблем.

У RHEL 8.x та RHEL 9.x збір журналів здійснюється переважно за допомогою таких двох програм:

  • rsyslog - Програма, яка швидко збирає та обробляє журнали. Це оновлена ​​версія syslog. Офіційний веб-сайт
  • journald - Один з компонентів systemd

rsyslog

У Rocky Linux 8.x або 9.x у каталозі /var/log/ є різні файли журналів. Давайте дізнаємося про них:

  • /var/log/boot.log - Реєстрація подій, що відбуваються під час завантаження операційної системи. Вміст файлу — звичайний текст.
  • /var/log/btmp - Записує журнал помилок входу. Щоб переглянути цей бінарний файл, скористайтеся командою lastb.
  • /var/log/cron - Записує журнали, пов'язані із запланованими завданнями системи. Вміст файлу — звичайний текст.
  • /var/log/dmegs - Записує журнал самоперевірки ядра після запуску. Вміст файлу — звичайний текст. Ви також можете скористатися командою dmegs для перегляду.
  • /var/log/lastlog - Записує час останнього входу всіх користувачів в операційну систему. Щоб переглянути цей бінарний файл, потрібно скористатися командою lastlog.
  • /var/log/maillog - Записує журнали, пов'язані з електронною поштою.
  • /var/log/messages - Файл журналу системного рівня, який записує ядро ​​операційної системи. Вміст файлу — звичайний текст. Коли у вашій операційній системі виникають помилки, спочатку слід переглянути файл журналу.
  • /var/log/secure - Записує журнали, пов'язані з ідентифікацією користувача, такі як вхід користувача, перемикач su, додавання нового користувача, зміна пароля користувача тощо.
  • /var/log/wtmp - Записує вхід та вихід користувачів, події запуску, завершення роботи та перезапуску операційної системи. Щоб переглянути цей бінарний файл, скористайтеся командою last.

Для звичайних текстових файлів формат зазвичай такий:

  1. Час, коли відбулася подія
  2. На якій машині сталася подія
  3. Назва служби або програми, яка спричинила подію
  4. Конкретний опис та пояснення події
  5. Інформація про користувача та термінал
  6. Деякі ключові слова (наприклад, помилка, невдача, інформація тощо)

Формат журналів для різних цілей дуже різниться, тому наведений вище опис формату не може відображати всі журнали.

Якщо у вашій операційній системі відсутній rsyslog, виконайте таку команду:

Shell > dnf install -y rsyslog

Файл конфігурації

  • /etc/rsyslog.conf - Основні файли конфігурації
  • /etc/rsyslog.d/ - Каталог зберігання додаткових файлів конфігурації

/etc/rsyslog.conf складається переважно з кількох частин:

  1. Модуль завантаження
  2. Глобальні директиви
  3. Правила - Автор покаже це детально.

Після десятиліть розробки, rsyslog наразі підтримує три різні формати конфігурації:

  1. базовий (sysklogd) - Цей формат підходить для представлення базової конфігурації в одному рядку.
mail.info /var/log/mail.log
mail.err @@server.example.net
  1. розширений (RainerScript) - Дуже гнучкий та точний формат конфігурації.
mail.err action(type="omfwd" protocol="tcp" queue.type="linkedList")
  1. застарілий (legacy) - цей формат вилучено з рекомендацій. Будь ласка, не використовуйте його.

Правила

Вміст цього розділу за замовчуванням як показано нижче:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

authpriv.*                                              /var/log/secure

mail.*                                                  -/var/log/maillog

cron.*                                                  /var/log/cron

*.emerg                                                 :omusrmsg:*

uucp,news.crit                                          /var/log/spooler

local7.*                                                /var/log/boot.log

Кожен рядок правила складається з двох частин:

  1. поле вибору – складається з об’єктів та пріоритетів
  2. поле дії – Як ви хочете обробити ці відповідні повідомлення

Поля відокремлюються одне від одного одним або кількома пробілами.

ПолеОпис
authЗаписує події, пов'язані з безпекою системи, автентифікацією користувачів та керуванням авторизацією
authprivЗаписує більш конфіденційні події безпеки (такі як операції sudo). "priv" еквівалентно приватному
cronЗапис подій, пов'язаних із запланованими завданнями
daemonЗаписує журнал роботи системного демона, що охоплює запуск служби, стан роботи та інформацію про помилки
ftpЗаписує журнали операцій, пов'язані з FTP-сервісами (такими як vsftpd та proftpd), включаючи інформацію про підключення, передачу файлів та помилки
kernЗаписує журнал, що генерується під час роботи ядра Linux, охоплюючи основні події, такі як драйвери обладнання, модулі ядра та системні винятки
lprЗаписує журнал роботи служби друку, що охоплює надсилання завдань друку, керування чергою та інформацію про помилки
mailЗаписує інформацію журналу поштових служб (таких як Postfix та Sendmail), включаючи надсилання, отримання пошти, обробку черги та події помилок
newsРідко використовується
securityте саме, що й auth
syslogЖурнали записів, створені службою syslog
userЗаписує інформацію журналу, створену програмами або користувачами простору користувача
uucpЗаписує журнали операцій, пов'язані з протоколом копіювання Unix-to-Unix (UUCP), включаючи передачу файлів, виконання віддалених команд та інші сценарії
local0Зарезервовано
local1Зарезервовано
....Зарезервовано
local7Зарезервовано

* представляє всі об'єкти. Ви також можете використовувати , та ; для об'єднання об'єктів в однорядкову конфігурацію. , означає логічне або; ; представляє роздільник правила.

auth,authpriv.*  /var/log/auth.log

# Equivalent to

auth.*   /var/log/auth.log
authpriv.*  /var/log/auth.log
kern.err;mail.alert  /var/log/critical.log
З'єднувачОпис
.Журнали записів мають вищий пріоритет, ніж ключові слова. Наприклад, cron.info означає, що записуватиметься в cron, пріоритет журналу якого вищий за info
.=Записує лише відповідний пріоритет ключового слова. Наприклад, *.=emerg вказує на те, що журнали з пріоритетом, що дорівнює emerg, записуватимуться у всіх програмах
.!Це означає виключено або не дорівнює

Пріоритети відсортовані від низького до високого:

НазваОпис
debugЗагальна інформація про налагодження
infoОсновна інформація про сповіщення
noticeЗагальна інформація певної важливості
warningПопереджувальне повідомлення, цей тип інформації не може вплинути на нормальну роботу операційної системи або служби
errПовідомлення про помилки, які можуть впливати на нормальну роботу операційної системи та служб
critКритичний стан, серйозніший за "err"
alertСтан сповіщення серйозніший, ніж "crit", і системному адміністратору потрібно негайно ним зайнятися
emergНадзвичайний стан, за якого операційна система зазвичай непридатна для використання

* представляє всі пріоритети журналу.

Чим нижчий пріоритет журналу, тим детальніший записаний вміст і тим нижчий рівень серйозності. Чим вищий пріоритет журналу, тим менше контенту записується і тим серйозніша проблема.

"action" стосується місця збереження або надсилання журналу:

  • /var/log/secure - Зберігає журнал у локальному файлі
  • @192.168.100.20:22 - Віддалена машина
  • :omusrmsg:root,frank,jack - Визначає список онлайн-користувачів. * представляє всіх користувачів. "omusrmsg" стосується «модуля виводу для користувацьких повідомлень».
  • /dev/tty12 - Спеціальні термінальні пристрої
  • - - Вимикає механізм буферизації під час запису у файл

Ротація Журналу

Log rotation - Ротація журналів вирішує проблеми зайнятості сховища та зниження продуктивності, спричинені постійним зростанням файлів журналів. Конкретні функції:

  • Rotation - Автоматично архівує поточний файл журналу відповідно до певних правил (наприклад, часу або розміру файлу) та створює новий порожній файл журналу для запису, щоб запобігти його надмірному розміру.
  • Compress - Стискає архівовані старі журнали для економії місця на диску.
  • Delete - Зберігає відповідні файли журналів та видаляє старі, термін дії яких закінчився, згідно з відповідними політиками.

Ми часто використовуємо інструмент logrotate для обертання журналів.

Правила іменування файлів журналів під час ротації:

  • параметр dateext - Використовує дату як суфікс файлу для ротації журналу. Наприклад, під час першої ротації журналу старий файл журналу "secure" зміниться на "secure-20250424", а logrotate створить новий "secure"
  • Без параметра dateetx – Використовує номери ротації як суфікс файлу після ротації журналу. Наприклад, коли відбувається перша ротація журналу, старий файл журналу "secure" зміниться на "secure.1", а logrotate створить новий "secure"

/etc/logrotate.conf та /etc/logrotate.d/

Shell > grep -v -E "^#|^$" /etc/logrotate.conf
weekly
rotate 4
create
dateext
include /etc/logrotate.d

Shell > ls -l /etc/logrotate.d/
-rw-r--r--  1 root root 130 Feb  7  2023 btmp
-rw-r--r--. 1 root root 160 Dec  5  2023 chrony
-rw-r--r--. 1 root root  88 Apr 12  2021 dnf
-rw-r--r--  1 root root  93 Mar 11 17:29 firewalld
-rw-r--r--. 1 root root 162 Apr 16 19:49 kvm_stat
-rw-r--r--  1 root root 289 Dec 18 01:38 sssd
-rw-r--r--  1 root root 226 Nov  5 15:43 syslog
-rw-r--r--  1 root root 145 Feb 19  2018 wtmp

/etc/logrotate.conf - Глобальний профіль для ротації журналів. Якщо елементи або параметри конфігурації перетинаються, перевагу мають останні зчитані елементи або параметри конфігурації. Порядок читання:

  1. Прочитати вміст файлу /etc/logrotate.conf зверху вниз
  2. Файли, включені за допомогою ключового слова "include"

Загальні елементи або параметри конфігурації:

ЕлементиОпис
dailyВизначає цикл журналу у днях
weeklyУ тижнях
monthlyУ місяцях
rotate <NUMBER>Кількість файлів, збережених після ротації журналу
compressСтиснення старих журналів відбувається після ротації журналів
create <MODE> <OWNER> <GROUP>Після ротації журналу визначте власника, групу та дозволи нового файлу журналу.
mail <E-MAIL ADDRESS>Після ротації журналу надсилає вихідний вміст електронною поштою на вказану адресу електронної пошти
missingokЯкщо файл журналу не існує, попереджувальна інформація журналу ігнорується
notifemptyЯкщо вміст файлу журналу порожній, ротація журналу не відбувається
minsize <SIZE>Умова розміру файлу для обертання журналу, тобто обертання журналу відбувається лише тоді, коли відповідає цій умові
dateextВикористовує дату як суфікс файлу для ротації журналу

Якщо ви встановлюєте програмний пакет з репозиторію, розробник програмного пакета визначає ротацію журналів програми, і користувачам зазвичай не потрібно змінювати правила ротації журналів. Якщо ви встановлюєте програму шляхом компіляції вихідного коду, вам потрібно врахувати та вручну налаштувати ротацію журналів.

Команда logrotate

Використання: logrotate [OPTION...] <configfile>

  • -v - Відображає процес обертання колод
  • -f - Застосування ротації журналів відбувається незалежно від того, чи виконано умови для ротації журналів
Shell > logrotate -v /etc/logrotate.conf
reading config file /etc/logrotate.conf
including /etc/logrotate.d
reading config file btmp
reading config file chrony
reading config file dnf
reading config file firewalld
reading config file kvm_stat
reading config file sssd
reading config file syslog
reading config file wtmp
Reading state from file: /var/lib/logrotate/logrotate.status
Allocating hash table for state file, size 64 entries
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state
Creating new state

Handling 8 logs

rotating pattern: /var/log/btmp  monthly (1 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/btmp
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-04 12:08
  log does not need rotating (log has been rotated at 2025-4-4 12:8, that is not month ago yet)

rotating pattern: /var/log/chrony/*.log  weekly (4 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/chrony/*.log
  log /var/log/chrony/*.log does not exist -- skipping
not running postrotate script, since no logs were rotated

rotating pattern: /var/log/hawkey.log  weekly (4 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/hawkey.log
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)

rotating pattern: /var/log/firewalld  weekly (4 rotations)
empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed
considering log /var/log/firewalld
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-20 13:00
  log does not need rotating ('minsize' directive is used and the log size is smaller than the minsize value)

rotating pattern: /var/log/kvm_stat.csv  10485760 bytes (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/kvm_stat.csv
  log /var/log/kvm_stat.csv does not exist -- skipping

rotating pattern: /var/log/sssd/*.log  weekly (2 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/sssd/sssd_implicit_files.log
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-26 12:42
  log does not need rotating (log is empty)
considering log /var/log/sssd/sssd_kcm.log
  Now: 2025-04-24 12:35
  Last rotated at 2025-02-08 13:49
  log does not need rotating (log is empty)
considering log /var/log/sssd/sssd.log
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-26 12:42
  log does not need rotating (log is empty)
considering log /var/log/sssd/sssd_nss.log
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-26 12:42
  log does not need rotating (log is empty)
not running postrotate script, since no logs were rotated

rotating pattern: /var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
 weekly (4 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/cron
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
considering log /var/log/maillog
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
considering log /var/log/messages
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
considering log /var/log/secure
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
considering log /var/log/spooler
  Now: 2025-04-24 12:35
  Last rotated at 2025-04-19 09:11
  log does not need rotating (log has been rotated at 2025-4-19 9:11, that is not week ago yet)
not running postrotate script, since no logs were rotated

rotating pattern: /var/log/wtmp  monthly (1 rotations)
empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed
considering log /var/log/wtmp
  Now: 2025-04-24 12:35
  Last rotated at 2024-05-20 13:00
  log does not need rotating ('minsize' directive is used and the log size is smaller than the minsize value)

journald

systemd — це програма, яка використовується для ініціалізації та бере на себе багато системних компонентів. Використовуйте journald у systemd, щоб перейняти вміст журналу.

journald — це демон у systemd, який бере на себе ведення журналів. Для читання журналів потрібно скористатися командою journalctl.

Зверніть увагу, що journald не вмикає збереження журналів за замовчуванням, тобто він зберігає та записує всі журнали лише з моменту запуску. Після перезавантаження операційної системи відбувається видалення журналів історії. Усі тимчасово збережені файли журналів за замовчуванням знаходяться в каталозі /run/log/journal/.

Shell > tree -hugp /run/log/journal/638c6d5d2b674f77be56174469099106/
/run/log/journal/638c6d5d2b674f77be56174469099106/
└── [-rw-r----- root     systemd-journal  8.0M]  system.journal

0 directories, 1 file

Цей тимчасовий файл є двійковим. Ви повинні скористатися командою journalctl для його розбору.

journald може записувати:

  • boot log
  • kernel log
  • application log

journald позначає журнали відповідно до пріоритету та засобу:

  • пріоритет - Важливість логу. Як і у випадку з rsyslog, чим вищий пріоритет, тим менше інформації записується та тим серйозніша проблема. Чим нижчий пріоритет, тим більше інформації записується, і тим менша проблема. Сортувати за пріоритетом від низького до високого:
Числовий кодпріоритетключові слова
7Debugdebug
6Informationalinfo
5Noticenotice
4Warning "Важливо"warning
3Помилкаerr
2Criticalcrit
1Alertalert
0Emergencyemerg
  • об'єкт - У цій таблиці показано об'єкт:
Числовий кодоб'єкт
0kern
1user
2mail
3daemon
4auth
5syslog
6lpr
7news
8uucp
9
10authpriv
11ftp
12
13
14
15cron
16local0
17local1
18local2
19local3
20local4
21local5
22local6
23local7

Команда journalctl

Використання: journalctl [OPTIONS...] [MATCHES...].

Ось список опцій у невпорядкованому списку:

  • -u - Вказує «одиницю»; ви можете використовувати це кілька разів в команді одного рядка. Наприклад, journalctl -u crond.service -u sshd.service
  • --system - Показує повідомлення від системних служб та ядра
  • --user - Показує повідомлення від служби поточного користувача
  • -k - Показує журнал повідомлень ядра з поточного завантаження
  • --since=DATA чи -S - Показує записи, які не старіші за вказану дату. Формат дати: "YYYY-MM-DD HH:MM:SS". Наприклад, journalctl --since="2025-04-24 14:00:30
  • --until=DATA чи -U - Показує записи, які не новіші за вказану дату. Формат дати: "YYYY-MM-DD HH:MM:SS". Наприклад, journalctl --since="2025-04-01 05:00:10" --until="2025-04-05 18:00:30"
  • --list-boots - Показує стислу інформацію про записані завантаження
  • -n N - Контролює кількість виведених записів. Якщо "N" не вказано, значення за замовчуванням дорівнює 10
  • -p PRIORITY - Визначає пріоритет або діапазон пріоритетів. Якщо вказати одне ключове слово пріоритету журналу, буде відображено цей пріоритет та записи з вищим пріоритетом. Наприклад, journalctl -p 3 або journalctl -p err Еквівалентно journalctl -p 0..3 або journalctl -p emerg..err
  • -b - Запит журналу з початку поточного ідентифікатора завантаження. Не плутайте ідентифікатор завантаження з індексним номером завантаження ядра.
  • -f - Динамічний журнал запитів, подібний до команди tail -f
  • -x - Додає пояснення повідомлень, де це можливо
  • -e - Переходить на кінцеву сторінку журналу, часто використовується з опцією -x
  • -r - Зворотний лог.
  • --disk-usage - Відображає дисковий простір, зайнятий файлами журналів
  • --rotate - Запитує негайну ротацію файлів журналу
  • --vacuum-size=BYTES - Зменшує файл журналу до заданого розміру. Поступово видаляє старий вміст журналу, доки розмір файлу не досягне заданого значення. Підтримувані суфікси розміру: K, M, G, T
  • --vacuum-time=TIME - Ви можете видалити старі записи журналу, вказавши момент часу, тобто записи журналу, зроблені раніше, будуть видалені. Підтримувані суфікси часу: s, m, h, дні, місяці, тижні, роки
  • --vacuum-files=INT - Вказує, скільки файлів журналу потрібно зарезервувати
  • -N - Перелічує всі назви полів, що використовуються наразі. Користувачі можуть використовувати метод "FIELD=VALUE" для пошуку пов'язаного контенту. Наприклад, journalctl _SYSTEMD_UNIT=sshd.service.
  • -g або -grep=PATTERN- Зіставляє вміст журналу за шаблоном та підтримує регулярні вирази. Якщо PATTERN повністю записаний у нижньому регістрі, вміст журналу, що відповідає, за замовчуванням не враховує регістр. Ви можете налаштувати чутливість до регістру за допомогою опції --case-sensitive
  • --case-sensitive=[BOOLEAN] - Налаштовує, чи враховувати регістр літер.
  • -o або --output=STRING - Змінює режим виводу journalctl. РЯДОК може бути short, short-precise, short-iso, short-iso-precise, short-full, short-monotonic, short-unix, verbose, export, json, json-pretty, json-sse, cat та with-unit
  • -q або --quiet - Тихий вихід
  • --sync - Синхронізує незаписані повідомлення журналу на диск

/etc/systemd/journald.conf

Shell > cat /etc/systemd/journald.conf
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=no
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K

Використовує "[ ]" для розміщення заголовка, як і у файлах конфігурації інших компонентів systemd, а під заголовком розташовані певні пари ключ-значення. У парі ключ-значення немає пробілу по обидва боки від знака рівності. Повну сторінку посібника з налаштування див. у man 5 journald.conf

  • Storage= - Керує розташуванням сховища даних journald. Значення за замовчуванням — auto.

  • volatile - Зберігає дані журналу в пам'яті, тобто у тимчасовому файлі, розташованому в каталозі /run/log/journal/.

  • persistent - Зберігає дані журналу в каталозі /var/log/journal/. Вам потрібно створити це вручну. Якщо цей каталог недоступний для запису, дані журналу будуть записані в каталог /run/log/journal/.
  • auto - схожий з persistent
  • none - Не зберігає жодних журналів, але це не вплине на журнали, що пересилаються іншим "цілям"

  • Compress= - Чи вмикати функцію стиснення. Значення за замовчуванням — так.

  • Seal= - Чи використовувати FSS (Forward Secure Sealing) для захисту записів журналу від зловмисного втручання. Значення за замовчуванням — так.

  • SplitMode= - Визначте основу для розділення файлів журналів. Виконання передумови (Storage=persistent) має відбутися, перш ніж воно набуде чинності. Значення за замовчуванням — uid.

  • SyncIntervalSec= - Визначає часовий інтервал для синхронізації даних журналу в пам'яті з диском. Зверніть увагу! Це відбувається лише для пріоритетів журналів помилок, попереджень, повідомлень, інформації та налагодження. Інші пріоритети журналів негайно синхронізуються з диском. Значення за замовчуванням становить 5m.

  • RateLimitIntervalSec= - Визначає часовий інтервал для частоти створення журналу. Значення за замовченням - 30s.

  • RateLimitBurst= - Максимальна кількість записів, які журнал генерує за заданий інтервал часу. Значення за замовченням - 10000. Якщо кількість записів у журналі перевищує 10 000 протягом заданого інтервалу часу, надлишкові журнали будуть видалені, а нові записи не створюватимуться до наступного інтервалу часу.

  • SystemMaxUse= - Контролює загальний розмір усіх файлів журналу в каталозі /var/log/journal/.

  • SystemKeepFree= - Контролює обсяг дискового простору, який потрібно резервувати в каталозі /var/log/journal/. На основі 1024 року суфікси включають K, M, G, T, P, E

  • SystemMaxFileSize= - Обмежує розмір одного файлу в каталозі /var/log/journal/. Якщо розмір перевищує заданий розмір, відбудеться обертання журналу

  • SystemMaxFiles= - Визначає, скільки файлів зберігати в каталозі /var/log/journal/. Коли воно перевищує визначену кількість, найстаріший журнал буде видалено.

  • RuntimeMaxUse= - Контролює загальний розмір даних журналу в каталозі /run/log/journal/.

  • RuntimeKeepFree= - Контролює, скільки місця резервувати в каталозі /run/log/journal/.

  • RuntimeMaxFileSize= - Керує розміром одного файлу журналу в каталозі /run/log/journal/. Коли колода досягне заданого розміру, відбудеться її обертання.

  • RuntimeMaxFiles= - Скільки файлів журналу потрібно зберігати в каталозі /run/log/journal/?

  • MaxRetentionSec= - Визначає час зберігання файлів журналів; видаляє старі файли журналів, якщо вони перевищують визначений час. Значення 0 вказує на те, що функція вимкнена. Суфікс значення має рік, місяць, тиждень, день, год, хв

  • MaxFileSec= - Ротація журналів залежно від часу. Оскільки опитування на основі розміру файлу (SystemMaxFileSize та RuntimeMaxFileSize) вже існує, опитування журналу на основі часу зазвичай не потрібне. Встановіть значення 0, щоб вимкнути цю функцію.

  • ForwardToSyslog= - Чи пересилати зібрані повідомлення журналу традиційному демону syslog. Значення за замовченням - no.

  • ForwardToKMsg= - Чи пересилати отримане повідомлення журналу до kmsg. Значення за замовченням - no.

  • ForwardToConsole= - Чи пересилати отримані повідомлення журналу до системної консолі. Значення за замовченням - no. Якщо встановлено значення «так», вам також потрібно налаштувати TTYPath

  • ForwardToWall= - Чи надсилати отримане повідомлення журналу як попередження всім зареєстрованим користувачам. Значення за замовчуванням — так.

  • TTYPath= - Вказує шлях до консолі. Вимагає ForwardToConsole=yes. Значення за замовчуванням — /dev/console

  • MaxLevelStore= - Встановлює максимальний рівень запису у файлі журналу. Значення за замовчуванням — debug

  • MaxLevelSyslog= - Встановлює максимальний рівень журналу, що пересилається традиційному демону syslog. Значення за замовчуванням — debug

  • MaxLevelKMsg= - Встановлює максимальний рівень журналу, що пересилається до kmsg. Значення за замовченням - notice

  • MaxLevelConsole= - Встановлює максимальний рівень журналу, що пересилається до системної консолі. Значення за замовченням - info

  • MaxLevelWall= - Встановлює максимальний рівень журналу, що надсилається всім зареєстрованим користувачам. Значення за замовчуванням — emerg

  • LineMax= - Максимально допустима довжина (байти) кожного запису журналу під час перетворення потоку журналів на записи журналів. З основою 1024 суфікс може бути K, M, G або T. Значення за замовчуванням — 48K

Інші інструкції

Якщо ви не зміните жодної конфігурації в /etc/systemd/journald.conf, rsyslog та journald можуть співіснувати, не впливаючи один на одного.

Shell > cat /etc/rsyslog.conf
...
#### MODULES ####

module(load="imuxsock"    # provides support for local system logging (e.g. via logger command)
       SysSock.Use="off") # Turn off message reception via local log socket;
                          # local messages are retrieved through imjournal now.
module(load="imjournal"             # provides access to the systemd journal
       UsePid="system" # PID nummber is retrieved as the ID of the process the journal entry originates from
       StateFile="imjournal.state") # File to store the position in the journal
#module(load="imklog") # reads kernel messages (the same are read from journald)
#module(load="immark") # provides --MARK-- message capability
...

journald перешле отримані дані журналу до сокета /run/systemd/journal/syslog для полегшення використання традиційних служб журналювання (rsyslog, syslog-ng). Однак, з конфігураційного файлу ми можемо дізнатися, що rsyslog не збирає журнали з journald за допомогою сокетів, а інтегрується через модуль введення (imjournal).

Q: Чи може операційна система не використовувати journald для ведення журналу?

Так. За замовчуванням, rsyslog та journald можуть співіснувати в операційній системі, не впливаючи один на одного. Співіснування не є найкращим вибором для деяких сценаріїв використання, орієнтованих на продуктивність (таких як пропускна здатність даних та споживання пам'яті). Ви можете налаштувати роботу rsyslog лише в режимі сокета, що покращує продуктивність та записує всі журнали у звичайному тексті. Однак, якщо вам потрібні структуровані журнали, ця зміна не підходить. Відповідні кроки такі:

Shell > vim /etc/rsyslog.config
...
module(load="imuxsock"
      SysSock.Use="on")
# module(load="imjournal" 
# UsePid="system" 
# StateFile="imjournal.state")
module(load="imklog")
...

Shell > vim /etc/systemd/journald.conf
[Journal]
Storage=none
...
ForwardToSyslog=yes
...

Shell > reboot

Author: tianci li

Contributors: Ganna Zhyrnova, Steven Spencer