
Цель урока: Научиться централизованно просматривать и анализировать системные журналы с помощью современной утилиты journalctl. Мы разберемся, чем journald (служба журналирования) отличается от старых текстовых логов, и освоим мощные возможности journalctl для фильтрации сообщений по времени, службам, уровню приоритета и другим параметрам.
Часть 1: Теория. Новая эра логов: systemd-journald
Исторически в Linux каждая служба (Apache, SSH, cron) писала свои логи в отдельные текстовые файлы в каталоге /var/log (например, auth.log, syslog). Это было просто, но имело недостатки: разные форматы, сложность в поиске связанных событий от разных служб, проблемы с ротацией.
В современных дистрибутивах Linux, использующих systemd (а это почти все популярные дистрибутивы, включая Ubuntu, Debian, CentOS), появилась централизованная система журналирования - systemd-journald.
Как это работает:
-
Служба journald запускается одной из первых при старте системы.
-
Она собирает сообщения ото всех источников: от ядра, от системных служб, из stdout и stderr запущенных программ.
-
Все эти данные она сохраняет в структурированном бинарном формате в каталог /var/log/journal.
Преимущества:
-
Централизация: Все логи в одном месте.
-
Структурированность: Каждая запись в журнале - это не просто строка текста, а набор полей (время, имя службы, PID процесса, уровень важности и т.д.). Это позволяет делать очень точные выборки.
-
Индексация: Благодаря бинарному формату и индексам, поиск по журналу работает очень быстро.
Для просмотра и анализа этих бинарных журналов и используется команда journalctl.
Часть 2: Практика. Базовое использование journalctl
1. Просмотр всех логов
Если запустить команду без опций, она выведет весь журнал от самого старого к самому новому, открыв его в less (наш знакомый просмотрщик).
journalctl
-
Используйте стрелки вверх/вниз для навигации.
-
Нажмите End (или Shift+G), чтобы сразу перейти к самым свежим записям в конце.
-
Для выхода нажмите q.
2. Просмотр логов в реальном времени (-f)
Одна из самых полезных функций, аналог tail -f. Показывает последние записи и остается активной, допечатывая новые сообщения по мере их появления. Идеально для наблюдения за системой в реальном времени.
# Для выхода нажмите Ctrl+C
journalctl -f
3. Просмотр логов с последней загрузки системы (-b)
Часто проблемы возникают во время загрузки. Эта опция покажет все сообщения с момента последнего старта системы.
journalctl -b
Часть 3: Практика. Мощная фильтрация - сила journalctl
Вот где раскрывается вся мощь структурированного журнала. Мы можем фильтровать вывод по различным полям.
1. Фильтрация по службе (юниту systemd)
Это самый частый и полезный сценарий: посмотреть логи конкретной службы.
-
-u (unit): Фильтр по имени юнита (службы).
# Посмотреть все логи, связанные со службой SSH
journalctl -u ssh
# Посмотреть логи веб-сервера Nginx в реальном времени
journalctl -u nginx -f
2. Фильтрация по времени (--since, --until)
Вы можете запрашивать логи за определенный временной промежуток. journalctl понимает как точные форматы, так и "человеческие" выражения.
# Показать все логи с сегодняшнего дня
journalctl --since "today"
# Показать все логи за последний час
journalctl --since "1 hour ago"
# Показать все логи за конкретный промежуток времени
journalctl --since "2025-08-18 10:00:00" --until "2025-08-18 11:00:00"
3. Фильтрация по уровню приоритета (-p)
Каждая запись в журнале имеет уровень важности (приоритет). Это позволяет отфильтровать информационный "шум" и оставить только ошибки.
-
Уровни (от важного к менее важному):
-
0: emerg (чрезвычайная ситуация)
-
1: alert (тревога)
-
2: crit (критическая ошибка)
-
3: err (ошибка)
-
4: warning (предупреждение)
-
5: notice (уведомление)
-
6: info (информация)
-
7: debug (отладка)
-
Когда вы указываете уровень, journalctl показывает сообщения этого уровня и всех более важных.
# Показать только ошибки (err) и все, что серьезнее (crit, alert, emerg)
journalctl -p err -b
Комбинация -p err -b (показать ошибки с последней загрузки) - это первая команда, которую нужно выполнить, если с сервером что-то не так.
4. Комбинирование фильтров
Фильтры можно и нужно комбинировать для получения максимально точных результатов.
Пример: Показать все ошибки службы nginx за последние 24 часа.
journalctl -u nginx -p err --since "yesterday"
Часть 4: Управление журналом
Журнал может занимать много места на диске. journalctl предоставляет инструменты для контроля его размера.
1. Проверка занимаемого места
journalctl --disk-usage
2. Очистка журнала
ВНИМАНИЕ: Эти операции необратимы.
# Удалить все заархивированные файлы журнала, оставив только активные
journalctl --vacuum-files=1
# Очистить журнал, оставив записи только за последние 2 дня
journalctl --vacuum-time=2d
# Ограничить размер журнала, например, до 500 Мб
journalctl --vacuum-size=500M
Настройкой постоянных лимитов мы займемся в более продвинутых уроках, посвященных конфигурации systemd.
Часть 5: Заключение
Мы освоили journalctl - современный и мощный инструмент для работы с системными журналами. В отличие от простого чтения текстовых файлов, journalctl дает вам возможность проводить сложный, многокритериальный анализ благодаря структурированному хранению данных. Вы научились фильтровать логи по службам, времени и уровню важности, что является ключевым навыком для быстрой и эффективной диагностики любых проблем на сервере. Запомните, пожалуйста, комбинацию journalctl -p err -b - она часто будет вашей отправной точкой в поиске неисправностей.
На следующем, 27-м уроке, мы начнем разбираться с тем, как Linux "видит" диски на блочном уровне. Мы изучим команды lsblk и fdisk, чтобы научиться просматривать разделы на дисках и понимать их структуру. Это первый шаг к таким продвинутым темам, как добавление новых дисков и создание файловых систем.
Перейти к просмотру - УРОК №27.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com

