Цель урока: Научиться централизованно просматривать и анализировать системные журналы с помощью современной утилиты journalctl. Мы разберемся, чем journald (служба журналирования) отличается от старых текстовых логов, и освоим мощные возможности journalctl для фильтрации сообщений по времени, службам, уровню приоритета и другим параметрам.

Часть 1: Теория. Новая эра логов: systemd-journald

Исторически в Linux каждая служба (Apache, SSH, cron) писала свои логи в отдельные текстовые файлы в каталоге /var/log (например, auth.logsyslog). Это было просто, но имело недостатки: разные форматы, сложность в поиске связанных событий от разных служб, проблемы с ротацией.

В современных дистрибутивах 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)
Каждая запись в журнале имеет уровень важности (приоритет). Это позволяет отфильтровать информационный "шум" и оставить только ошибки.

  • Уровни (от важного к менее важному):

    • 0emerg (чрезвычайная ситуация)

    • 1alert (тревога)

    • 2crit (критическая ошибка)

    • 3err (ошибка)

    • 4warning (предупреждение)

    • 5notice (уведомление)

    • 6info (информация)

    • 7debug (отладка)

Когда вы указываете уровень, 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

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи нашли это полезным (0 голосов)