Linux

Journalctl: Ваш гид по системным логам в современном Linux

3 мин. чтения
Journalctl: Ваш гид по системным логам в современном Linux

Представьте: сервер тормозит, служба не запускается, или вы просто видите странное сообщение в консоли. В мире Windows вы бы открыли «Просмотр событий». В современном Linux, начиная с systemd, ваш лучший друг и детектив — команда journalctl - Это не просто просмотр логов, это мощный инструмент для глубокого анализа всего, что происходит в системе. Давайте разберемся, как им пользоваться эффективно.

Что такое journalctl и почему он заменил старые логи? Раньше логи лежали в /var/log/ в виде текстовых файлов (syslog, messages, auth.log)

journalctl - Это централизованная система журналирования, тесно интегрированная с systemd. Она собирает логи не только от системных служб, но и от ядра, демонов и даже приложений. Ключевые преимущества:

Структурированность: Записи хранятся в бинарном формате с метаданными (временная метка, юнит, PID, приоритет), что позволяет делать умную фильтрацию.

📌Централизация: Все в одном месте.

📌Целостность: Защита от модификации (в определенных конфигурациях).

📌Интеграция с systemd: Просмотр логов конкретной службы делается одной командой.


Базовое использование: С чего начать?

 Простой запуск sudo journalctl выведет все логи с момента загрузки системы, начиная с самых старых. Это как огромный свиток — полезно, но не всегда удобно.

   Фильтрация — главная суперсила journalctl
   Вот где начинается магия. Вместо grep (хотя его тоже можно использовать) journalctl предлагает встроенные фильтры.

  1. По службе (unit): Это самое частое действие.    
plaintext
journalctl -u nginx.service journalctl -u sshd -f  # -f для follow (как tail -f)
  1. По приоритету (уровню важности): Смотрим только на ошибки или критические сообщения.
plaintext
journalctl -p err -b # все ошибки с последней загрузки

   Уровни: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7).

  1. По времени:
plaintext
journalctl --since "2024-01-15 09:00:00" --until "2024-01-15 18:00:00" journalctl --since yesterday journalctl --since "1 hour ago"
  1.  По загрузке (boot):
plaintext
journalctl -b # логи текущей загрузки journalctl -b -1 # логи предыдущей загрузки journalctl -b -2 # и так далее journalctl --list-boots # показать список загрузок
  1.   Комбинации фильтров (логическое И):
plaintext
journalctl -u mysql -p err --since today

 

   Практические сценарии: «Как сделать…»

   «Что привело к падению системы?» Смотрим логи предыдущей загрузки:

plaintext
journalctl -b -1 -p crit..emerg

   «Почему не стартует моя служба?»

plaintext
sudo systemctl status myapp.service  # смотрим последние строчки journalctl -u myapp.service -xe  # углубляемся в детали

   «Кто и когда пытался залогиниться?»

plaintext
journalctl _COMM=sshd --since today | grep "Failed password"

   «Найти все сообщения от ядра за последний час»:

plaintext
journalctl -k --since "1 hour ago"

   Важные нюансы и настройка

  • Ротация логов: По умолчанию    journalctl ротирует логи автоматически. Настройки находятся:  /etc/systemd/journald.conf.  Можно ограничить SystemMaxUse=.
  • Постоянное хранение: Убедитесь, что в конфиге:   Storage=  установлено в  persistent (логи хранятся в  /var/log/journal/),  иначе они пропадут после перезагрузки.        
  • Чтение без sudo: Обычный пользователь видит только логи своих процессов. Для полного доступа нужны права root.    

Заключение

journalctl - Это гораздо больше, чем tail или cat. Это полноценная система диагностики. Потратьте немного времени на освоение его фильтров (-u, -p, -b, --since) и вы начнете решать проблемы в десятки раз быстрее. Он избавляет от необходимости запоминать расположение десятков лог-файлов и предоставляет единый, мощный интерфейс для расследования любых инцидентов в вашей системе.

 

Теги статьи

Новые статьи на почту

Без спама, только полезное

Подписываясь, вы соглашаетесь с политикой конфиденциальности

Читайте также