VPS-сервер - ідеальне рішення для безлічі технічних завдань, включно з розміщенням високопродуктивних веб-сайтів, розгортанням призначеного для користувача прог...
Блог компанії 3v-Hosting
6 хв.
Системні адміністратори Linux покладаються на файли журналів для моніторингу активності системи, усунення неполадок і забезпечення стабільності середовища. Уміння ефективно переміщатися, фільтрувати і працювати з журналами - критично важлива навичка, і Linux надає потужні інструменти, такі як journalctl, grep, awk і sed, щоб спростити цей процес. Ці утиліти допомагають витягувати необхідну інформацію, аналізувати поведінку системи та автоматизувати завдання обробки журналів. У цій статті ми розповімо про використання кожного інструменту, виділимо їхні переваги та практичне застосування в управлінні журналами Linux.
Системи Linux генерують величезну кількість журнальних даних, які зазвичай зберігаються в каталозі /var/log/. Ці журнали включають системні журнали, журнали автентифікації, журнали ядра і журнали, специфічні для додатків. Існують дві основні системи ведення журналів:
Традиційні файли журналів: Зберігаються у вигляді звичайного тексту і доступні за допомогою таких інструментів, як cat, grep і awk.
Журнал Systemd: Двійкова система ведення журналів, керована systemd-journald і доступна через 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 «error» /var/log/syslog
Пошук без урахування регістру:
grep -i «failed» /var/log/auth.log
Об'єднайте journalctl і grep для більш точної фільтрації:
journalctl | grep «disk failure»
Увімкніть виділення кольором для кращої читабельності:
grep --color=auto «warning» /var/log/dmesg
Для пошуку кількох шаблонів:
grep -E «error|fail|critical» /var/log/syslog
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 (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 для пошуку, фільтрації та перетворення даних журналу. Освоївши ці утиліти, ви зможете спростити аналіз журналів, виявити аномалії та підвищити надійність системи. Ці інструменти підвищать ефективність усунення неполадок і дадуть змогу автоматизувати проактивний моніторинг системи.
Детальний посібник з використання tmux для Linux та VPS: встановлення, створення сесій, робота з вікнами та панелями, гарячі клавіші та захист тривалих процесів...
Як визначити, хто видалив файл на сервері під управлінням Linux. Перевірка історії команд Bash, системних журналів, auditd, Docker, Git та інших джерел, які доп...
Як перенести Docker Compose на новий VPS без простою: підготовка сервера, перенесення Docker Volumes, баз даних і файлів, перевірка проєкту та безпечне перемика...