Блог компанії 3v-Hosting

Робота з журналами Linux: journalctl, grep, awk і sed

Адміністрування

6 хв.


Системні адміністратори Linux покладаються на файли журналів для моніторингу активності системи, усунення неполадок і забезпечення стабільності середовища. Уміння ефективно переміщатися, фільтрувати і працювати з журналами - критично важлива навичка, і Linux надає потужні інструменти, такі як journalctl, grep, awk і sed, щоб спростити цей процес. Ці утиліти допомагають витягувати необхідну інформацію, аналізувати поведінку системи та автоматизувати завдання обробки журналів. У цій статті ми розповімо про використання кожного інструменту, виділимо їхні переваги та практичне застосування в управлінні журналами Linux.

 

 


Логування в Linux

 

Системи Linux генерують величезну кількість журнальних даних, які зазвичай зберігаються в каталозі /var/log/. Ці журнали включають системні журнали, журнали автентифікації, журнали ядра і журнали, специфічні для додатків. Існують дві основні системи ведення журналів:

    Традиційні файли журналів: Зберігаються у вигляді звичайного тексту і доступні за допомогою таких інструментів, як cat, grep і awk.
    Журнал Systemd: Двійкова система ведення журналів, керована systemd-journald і доступна через journalctl.


Ефективне управління журналами вимагає знайомства з обома методами та інструментами, доступними для їхнього розбору та аналізу.

 

 

 

 

Використання journalctl для аналізу журналів

 

journalctl - це основна команда для взаємодії з журналом systemd. На відміну від традиційних журналів, журнал структурований, індексований і здатний ефективно фільтрувати журнали.

 

Перегляд журналів

Основною командою для перегляду журналів є:

    journalctl

Вона відображає всі журнали в хронологічному порядку. Для відстеження журналів у реальному часі, аналогічно tail -f, використовуйте:

    journalctl -f

 

 

Фільтрація журналів за часом

Щоб проаналізувати певні періоди часу, використовуйте:

    journalctl --since «2024-02-01 00:00:00» --until «2024-02-02 23:59:59»

 

Для фільтрації за відносним часом:

    journalctl --since «1 hour ago»

 

 

Фільтрація за підрозділами або службами

Для отримання журналів, що належать до конкретної служби, використовуйте:

    journalctl -u sshd.service

 

Можна одночасно запитувати кілька модулів:

    journalctl -u nginx.service -u mysql.service

 

 

Перегляд журналів ядра

Журнали ядра необхідні для діагностики системних проблем:

    journalctl -k

Щоб переглянути журнали ядра з моменту завантаження:

    journalctl -k -b

 

 

Збереження журналів

За замовчуванням systemd-journald зберігає журнали в оперативній пам'яті. Щоб зробити їх постійними, налаштуйте файл /etc/systemd/journald.conf:

    [Journal]
    Storage=persistent

 

Перезапустіть службу, щоб застосувати зміни:

    systemctl restart systemd-journald

 

 

 

 

Пошук у журналах за допомогою grep

grep - це утиліта для пошуку тексту, яка дає змогу користувачам фільтрувати записи журналу за ключовими словами.

 

Основні способи пошуку

Пошук певного ключового слова у файлі журналу:

    grep «error» /var/log/syslog

 

Пошук без урахування регістру:

    grep -i «failed» /var/log/auth.log

 

 

Використання grep з journalctl

Об'єднайте journalctl і grep для більш точної фільтрації:

    journalctl | grep «disk failure»

 

 

Виділення збігів

Увімкніть виділення кольором для кращої читабельності:

    grep --color=auto «warning» /var/log/dmesg

 

 

Фільтрація кількох шаблонів

Для пошуку кількох шаблонів:

    grep -E «error|fail|critical» /var/log/syslog

 

 


 

Інші статті з адміністрування Linux у нашому блозі:


    - Як перевірити версію Ubuntu

    - Використання команди NsLookup у Windows та Linux

    - Як відкрити порт в UFW

    - Що таке LVM і як налаштувати LVM в Ubuntu

 


 

 

Обробка журналів за допомогою awk

 

awk - це потужний інструмент для опрацювання тексту, який дає змогу витягувати та форматувати дані з журналів.

 

Витяг певних полів

Для структурованих журналів awk допомагає витягти ключову інформацію. Приклад:

    awk '{print $1, $2, $3, $5}' /var/log/syslog

Витягуються перші три стовпці (дата і час) і п'ятий стовпець (повідомлення журналу).

 

 

Фільтрація журналів за умовами

Щоб відфільтрувати журнали за умовами:

    awk '$5 == «ERROR»' /var/log/syslog

Відобразяться тільки ті рядки, в яких п'яте поле дорівнює «ERROR».

 

Форматування виведення журналу

Щоб переформатувати журнали для зручності читання:

    awk '{print «Timestamp: “$1, ”Message: “$5}” /var/log/syslog

 

 

 

 

Маніпулювання журналами за допомогою sed

 

sed (Stream Editor - Редактор потоків) дає змогу «на льоту» маніпулювати текстом у журналах.


Заміна тексту

Щоб замінити входження слова:

    sed 's/error/ERROR/g' /var/log/syslog


Видалення непотрібних рядків

Видалення порожніх рядків із файлу журналу:

    sed '/^$/d' /var/log/syslog

 

Вилучення специфічної інформації

Щоб витягти рядки, що містять слово «failed», і видалити інший вміст:

    sed -n '/failed/p' /var/log/auth.log

 

 

 

 

Автоматизація обробки журналу

 

Поєднання journalctl, grep, awk і sed дає змогу автоматизувати аналіз журналів. Наприклад, щоб витягти помилки автентифікації та відформатувати їх:

    journalctl -u sshd | grep «Failed password» | awk '{print $1, $2, $3, $9}' | sed 's/root/admin/g'

Це витягне тимчасову мітку, ім'я користувача і переформатує висновок для наочності.

 

 

 

 

Висновок

Якщо ви хочете стати системним адміністратором, ви повинні розуміти, як ефективно працювати з журналами Linux. Використовуйте journalctl для розширеного інтерфейсу журналів systemd, а grep, awk і sed для пошуку, фільтрації та перетворення даних журналу. Освоївши ці утиліти, ви зможете спростити аналіз журналів, виявити аномалії та підвищити надійність системи. Ці інструменти підвищать ефективність усунення неполадок і дадуть змогу автоматизувати проактивний моніторинг системи.
 

Вразливості WordPress та як їх виявити
Вразливості WordPress та як їх виявити

Вразливості WordPress на практиці: як їх виявляють за допомогою WPScan, де шукати слабкі місця та які помилки найчастіше призводять до злому сайту та втрати кон...

10 хв
Налаштування WireGuard на VPS
Налаштування WireGuard на VPS

Покрокова інструкція з налаштування WireGuard на VPS: встановлення, генерація ключів, конфігурація сервера та клієнта, запуск VPN і вирішення типових проблем. Ш...

14 хв