Close

Як аналізувати логи та виявляти системні помилки Linux утилітою Journalctl?

Journalctl — “наріжний камінь” системного адміністратора. В результаті роботи з Journalctl я виявив та прибрав усі помилки, знайдені в системі, а Linux пришвидшився у 2 рази. У цій статті я розкажу що таке Journalctl та як з ним працювати й дам повний список команд.

Зміст статті

Що таке Journalctl?

Journalctl — це службова утиліта командного рядка Linux, яка містить системні логи (записи) та події на рівні ядра. Належить до програмного компоненту systemd. З допомогою Journalctl можна аналізувати логи, визначати системні збої і помилки ініціалізації, конфлікти в конфігурації та інші проблеми всередині операційної системи Linux.

Повідомлення в журналі Journalctl класифікуються за рівнем пріоритету та категоріям (Facility). Класифікація записів відповідає класичному протоколу Syslog (RFC 5424).

Структура systemd

Архітектура systemd

Налаштувати роботу Journalctl можна у файлі конфігурації: /etc/systemd/journald.conf

Він містить наступні налаштування:

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#SystemMaxUse=50M
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month

Список команд Journalctl

ℹ️ Усі команди виконувати з приставкою sudo від імені суперадміністратора.

  • journalctl  — виклик служби Journalctl і показ усіх записів журналу.
  • journalctl -n 100 — показати 100 останніх записів журналу.
  • journalctl -f  — показувати записи журналу в реальному часі.
  • journalctl -k  — вивід повідомлень ядра Linux.
  • journalctl -e — відкрити журнал, відмотавши його до останнього запису.
  • journalctl -b  — показати усі записи з моменту останнього завантаження.
  • journalctl --list-boots | tail – переглянути останні 10 рядків логів усіх запусків системи.
  • journalctl -b -2 – переглянути логи завантаження системи за номером.
  • journalctl --since 2022–09–19 — перегляд записів журналу від вказаної дати (можна також додати час).
  • journalctl --since 2022–12–17 --until 2022–12–18 10:00:00 — перегляд записів журналу за вказаним проміжком дати і часу.
  • journalctl --since yesterday — показати вчорашній журнал логів.
  • journalctl -p err  — вивести записи журналу за рівнем пріоритету “Error” (помилка). Усі рівні див. у табл. вище.
  • journalctl -u nginx.service — вивести записи журналу, пов’язані з вказаною службою.
  • journalctl -u NetworkManager -n 5 – вивести останні 5 записів журналу, пов’язані з вказаною службою.
  • systemctl list-units — type=service — дуже корисна додаткова команда, показує список назв усіх сервісів, зареєстрованих в системі. Червоним кольором підсвічуються проблемні. Їх назву можна вказати у команді вище та знайти в журналі.
  • journalctl --grep=ЗНАЧЕННЯ — пошук записів журналу за збігом по вказаному значенню.
  • journalctl _PID=1 — пошук записів журналу за вказаним ідентифікатором системного процесу.
  • journalctl /usr/sbin/nginx — пошук записів журналу за назвою виконуваного файлу.
  • journalctl --disk-usage — показати скільки дискового простору займають журнали.
  • journalctl --vacuum-size=100M — видалити усі записи журналу, залишивши останні 100 Мб.
  • journalctl --vacuum-time=2weeks — видалити усі записи журналу крім останніх 2 тижнів.
  • journalctl -o json — вивести логи в форматі JSON.
  • Повний список опцій та ключів можна переглянути, виконавши команду: journalctl -h
  • Системна документація: man journalctl
  • Перезвантажити службу: sudo service systemd-journald restart

Вивід повідомлень Journalctl

Journalctl виводить усі записи з системних журналів Linux, включаючи помилки та попередження, починаючи з того моменту, коли система почала завантажуватись.

Формат логів Journalctl

Старі записи йдуть першими і починаються згори, новіші – внизу. Користувач може використовувати клавіші: “PageUp” і “PageDown”, щоб пересуватися по списку, “Enter” – щоб переглядати журнал в рядок і “Q” – щоб вийти.

Формат повідомлень Journalctl має наступний формат:

Oct 25 03:27:34 host service.name[1]: Log message.

  • Oct 25 03:27:34 – дата і час створення запису логу;
  • host – ім’я системи, у якій зареєстровано лог;
  • service.name – ім’я служби або додатку, яка створила цей запис логу;
  • [1] – номер служби, зареєстрованої в системі, або як його ще називають PID;
  • Log message – повідомлення запису лога.

ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:

0 0 голосів
Рейтинг статті
Підписатися
Сповістити про
guest
0 Коментарі
Старіші
Новіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі
0
Цікаво почути Вашу думку!x
Отримати комерційну пропозицію
Оформити заявку
Замовити консультацію

Заповніть, будь ласка, форму й наш спеціаліст зв’яжеться з Вами та надасть безкоштовну консультацію!

Замовити дзвінок

Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!