Анализ журналов в Red Hat Enterprise Linux

Red Hat Enterprise LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы получите практический опыт анализа и хранения системных журналов в Red Hat Enterprise Linux 9 с использованием journalctl и rsyslog. Вы начнете с изучения архитектуры системного логирования, включая роли systemd-journald и rsyslog, а также ознакомитесь с основными файлами журналов. Затем вы научитесь просматривать и фильтровать файлы syslog с помощью стандартных команд, вручную отправлять пользовательские сообщения syslog, а также исследовать и фильтровать записи системного журнала с помощью journalctl. Лабораторная работа также охватывает настройку постоянного хранилища системного журнала и поддержание точного системного времени с помощью timedatectl и chronyd, что даст вам необходимые навыки для анализа системы и устранения неполадок.

Понимание архитектуры системных журналов и основных файлов

На этом этапе вы познакомитесь с фундаментальными компонентами системного логирования в Red Hat Enterprise Linux 9, уделив особое внимание службам systemd-journald и rsyslog, а также ключевым файлам журналов, которыми они управляют. Понимание этой архитектуры критически важно для эффективного анализа системы и устранения неполадок.

Сначала давайте рассмотрим службу systemd-journald. Эта служба является ядром системы регистрации событий операционной системы. Она собирает сообщения о событиях из различных источников, включая ядро системы, процессы ранней загрузки, стандартный вывод/ошибки демонов и события syslog. Служба systemd-journald хранит эти журналы в структурированном, индексированном бинарном файле, называемом journal.

Затем мы рассмотрим службу rsyslog. В то время как systemd-journald собирает журналы, rsyslog считывает сообщения syslog из журнала по мере их поступления. Затем он обрабатывает эти сообщения и записывает их в традиционные файлы журналов в каталоге /var/log или пересылает их другим службам в соответствии со своей конфигурацией. Эти файлы rsyslog сохраняются после перезагрузки.

Давайте изучим некоторые важные файлы журналов, управляемые rsyslog в каталоге /var/log. Вы можете использовать команду ls для вывода содержимого этого каталога.

ls /var/log

Вы увидите список различных файлов журналов. В зависимости от вашей системы, вы должны увидеть такие файлы, как anaconda, audit, boot.log, chrony, cron, dnf.log, messages, secure и другие. Вот некоторые из наиболее распространенных:

  • /var/log/messages: Этот файл содержит большинство общих сообщений syslog, за исключением тех, что связаны с аутентификацией, обработкой почты, выполнением запланированных заданий и отладкой.
  • /var/log/secure: Этот файл хранит сообщения syslog, связанные с событиями безопасности и аутентификации.
  • /var/log/maillog: Этот файл содержит сообщения syslog о работе почтового сервера.
  • /var/log/cron: Этот файл записывает сообщения syslog о выполнении запланированных заданий.
  • /var/log/boot.log: Этот файл содержит консольные сообщения (не syslog) о запуске системы.

Для просмотра содержимого этих файлов можно использовать команды cat, less или tail. Обратите внимание, что для чтения большинства файлов журналов в /var/log требуются права суперпользователя, поэтому вам нужно будет использовать sudo. Например, давайте просмотрим последние несколько строк файла /var/log/messages с помощью tail.

sudo tail /var/log/messages

Вы также можете просмотреть содержимое файла /var/log/secure, который важен для аудита безопасности.

sudo tail /var/log/secure

Понимание назначения этих файлов поможет вам быстро находить нужную информацию при устранении неполадок в системе.

Просмотр и фильтрация файлов Syslog с помощью стандартных команд

На этом этапе вы научитесь эффективно просматривать и фильтровать файлы syslog с помощью стандартных команд Linux. Сообщения Syslog классифицируются по facility (подсистема, создавшая сообщение) и priority (серьезность сообщения). Понимание этих категорий важно для эффективного анализа журналов.

Сначала давайте рассмотрим концепцию объектов (Facilities) и приоритетов (Priorities) Syslog.

Объекты Syslog (Facilities): Они указывают источник сообщения журнала. Примеры включают kern (сообщения ядра), user (сообщения уровня пользователя), mail (сообщения почтовой системы), daemon (сообщения системных демонов), auth (сообщения аутентификации и безопасности) и cron (сообщения демона планировщика).

Приоритеты Syslog (Priorities): Они определяют серьезность сообщения, варьируясь от emerg (система неработоспособна) до debug (сообщение уровня отладки). Порядок серьезности от высшего к низшему: emerg, alert, crit, err, warning, notice, info, debug.

Файлы журналов могут стать очень большими, что затрудняет поиск конкретной информации. Поэтому фильтрация необходима. Вы можете использовать команды grep, awk и sed для фильтрации содержимого файлов журналов.

Начнем с просмотра всего содержимого /var/log/messages с помощью less. Эта команда позволяет прокручивать файл. Нажмите q, чтобы выйти из less. Не забудьте использовать sudo, так как для чтения файлов журналов требуются права суперпользователя.

sudo less /var/log/messages

Теперь давайте попробуем отфильтровать сообщения. Допустим, вас интересуют сообщения, связанные с authentication (аутентификацией). Эти сообщения обычно находятся в /var/log/secure. Используйте grep для поиска строк, содержащих слово "authentication" в /var/log/secure. Не забудьте использовать sudo.

sudo grep "authentication" /var/log/secure

Вы можете не увидеть вывода, если недавних сообщений об аутентификации нет. Давайте попробуем более распространенный поисковый запрос, например "sshd", который относится к демону SSH.

sudo grep "sshd" /var/log/secure

Вы должны увидеть вывод, показывающий активность демона SSH, попытки аутентификации или другие события, связанные с безопасностью. Точный вывод будет зависеть от текущей активности системы и может включать записи, подобные этим:

Dec 16 10:15:30 host sshd[1234]: Accepted publickey for labex from 172.25.0.10 port 12345 ssh2
Dec 16 10:15:30 host sshd[1234]: pam_unix(sshd:session): session opened for user labex(uid=1000) by (uid=0)
...output omitted...

Сообщения журнала также содержат временные метки. Вы можете фильтровать сообщения по дате и времени. Например, чтобы увидеть сообщения за определенную дату, можно объединить grep с датой. Давайте попробуем найти сообщения за сегодняшнюю дату в /var/log/messages. Используйте формат текущей даты, который отображается в ваших системных журналах.

sudo grep "$(date '+%b %d')" /var/log/messages

Ротация файлов журналов (Log File Rotation): Чтобы предотвратить чрезмерное потребление дискового пространства файлами журналов, системы используют logrotate. Эта утилита выполняет ротацию файлов журналов, переименовывая старые (например, /var/log/messages становится /var/log/messages-20220320) и создавая новые пустые файлы. По истечении определенного периода (обычно четыре недели) самые старые ротированные файлы журналов удаляются. Запланированное задание запускает logrotate ежедневно для управления этим процессом.

Вы можете увидеть ротированные файлы журналов, снова просмотрев содержимое /var/log. Вы можете увидеть файлы с расширениями даты или расширениями .gz (если они были сжаты).

ls -l /var/log/messages*

Пример вывода:

-rw-------. 1 root root 123456 Mar 20 23:59 /var/log/messages
-rw-------. 1 root root  78901 Mar 13 23:59 /var/log/messages-20220320
-rw-------. 1 root root  54321 Mar 06 23:59 /var/log/messages-20220313.gz
...output omitted...

Это показывает, как logrotate управляет старыми файлами журналов.

Наконец, давайте проанализируем структуру записи syslog. Типичное сообщение журнала в /var/log/secure выглядит так:

Dec 16 10:11:48 host sshd[1433]: Failed password for student from 172.25.0.10 port 59344 ssh2

  • Dec 16 10:11:48: Временная метка записи журнала.
  • host: Хост, отправивший сообщение журнала.
  • sshd[1433]: Имя программы или процесса (sshd) и его PID (1433), отправившие сообщение.
  • Failed password for …: Фактическое содержание сообщения.

Понимание этого формата поможет вам более эффективно анализировать и интерпретировать записи журналов.

Ручная отправка пользовательских сообщений Syslog

На этом этапе вы узнаете, как вручную отправлять пользовательские сообщения syslog с помощью команды logger. Это полезный метод для тестирования конфигураций службы rsyslog или для внедрения пользовательских сообщений в системные журналы в целях отладки или мониторинга.

Команда logger отправляет сообщения в службу rsyslog. По умолчанию она отправляет сообщение с объектом user и приоритетом notice (user.notice), если иное не указано с помощью опции -p.

Начнем с отправки простого тестового сообщения в стандартное местоположение журнала, которое обычно является /var/log/messages.

logger "This is a test message from labex."

После выполнения команды вы можете убедиться, что сообщение было записано, проверив файл /var/log/messages. Используйте tail для просмотра последних нескольких строк файла. Не забудьте использовать sudo.

sudo tail /var/log/messages

Вы должны увидеть свое пользовательское сообщение в конце вывода, примерно так:

...
Dec 16 10:30:00 host labex: This is a test message from labex.

Теперь давайте попробуем отправить сообщение с определенным объектом и приоритетом. Вспомните из предыдущего шага, что сообщения syslog классифицируются по объекту и приоритету. Например, local7.notice означает, что сообщение будет записано с объектом local7 и приоритетом notice. Объект local7 часто используется для пользовательских приложений или сообщений загрузки, и обычно направляется в /var/log/boot.log конфигурацией rsyslog.

Чтобы отправить сообщение в службу rsyslog для записи в файл /var/log/boot.log, выполните следующую команду logger:

logger -p local7.notice "Log entry created by labex for boot.log"

Теперь убедитесь, что это сообщение было записано в /var/log/boot.log. Используйте sudo.

sudo tail /var/log/boot.log

Вы должны увидеть свое пользовательское сообщение в выводе:

...
Dec 16 10:31:00 host labex: Log entry created by labex for boot.log

Это демонстрирует, как можно управлять тем, куда записываются ваши пользовательские сообщения, указывая объект и приоритет. Эта возможность очень полезна для тестирования конфигураций rsyslog и для внедрения специфических событий в ваши системные журналы.

Исследование и фильтрация записей системного журнала с помощью journalctl

На этом этапе вы узнаете, как исследовать и фильтровать записи системного журнала с помощью команды journalctl. Как вы уже узнали, служба systemd-journald хранит данные журналов в структурированном, индексированном бинарном файле, называемом journal. Команда journalctl — ваш основной инструмент для взаимодействия с этим журналом.

Начнем с просмотра всех сообщений в журнале. Когда вы запускаете journalctl без каких-либо опций, он отображает все доступные записи журнала, начиная с самых старых. Поскольку вы вошли в систему как labex с правами sudo, у вас будет полный доступ к журналу.

journalctl

Вы увидите большой объем вывода. Нажмите q, чтобы выйти из просмотрщика journalctl. Обратите внимание, что journalctl выделяет важные сообщения журнала: сообщения с приоритетом notice или warning выделены жирным шрифтом, а сообщения с приоритетом error или выше — красным цветом.

Теперь давайте изучим некоторые распространенные опции journalctl для фильтрации и просмотра конкретных записей.

1. Просмотр последних N записей журнала (опция -n): По умолчанию journalctl -n показывает последние 10 записей. Вы можете указать другое число, например, последние 5 записей:

journalctl -n 5

Вы должны увидеть 5 самых последних записей журнала.

2. Отслеживание новых записей журнала (опция -f): Подобно команде tail -f, опция journalctl -f выводит последние 10 строк системного журнала и продолжает выводить новые записи по мере их добавления. Это очень полезно для мониторинга в реальном времени.

journalctl -f

Чтобы выйти из этого режима, нажмите Ctrl+C.

3. Фильтрация по приоритету (опция -p): Вы можете фильтровать вывод по уровню приоритета записей журнала. Опция journalctl -p показывает записи с указанным уровнем приоритета (по имени или номеру) или выше. Уровни приоритета в порядке возрастания: debug, info, notice, warning, err, crit, alert, emerg.

Давайте выведем записи журнала с приоритетом err или выше:

journalctl -p err

Вы можете увидеть сообщения об ошибках, относящиеся к различным компонентам системы.

4. Фильтрация по модулю systemd (опция -u): Вы можете показать сообщения для указанного модуля systemd, используя опцию journalctl -u и имя модуля. Например, чтобы просмотреть журналы специально для службы sshd:

journalctl -u sshd.service

Это отобразит все записи журнала, связанные с демоном SSH.

5. Фильтрация по временному диапазону (опции --since и --until): При поиске конкретных событий вы можете ограничить вывод определенным временным интервалом. Обе опции --since и --until принимают аргумент времени в формате "YYYY-MM-DD hh:mm:ss". Двойные кавычки обязательны, если в аргументе есть пробелы. Вы также можете использовать относительные термины, такие как yesterday, today, tomorrow, или временные интервалы, такие как "-1 hour".

Давайте просмотрим все записи журнала с начала сегодняшнего дня:

journalctl --since today

Теперь давайте просмотрим записи за последний час:

journalctl --since "-1 hour"

6. Просмотр подробного вывода (опция -o verbose): Чтобы увидеть дополнительные сведения о каждой записи журнала, включая внутренние поля журнала, можно использовать опцию -o verbose. Это может быть полезно для расширенного устранения неполадок.

journalctl -n 1 -o verbose

Это покажет последнюю запись журнала со всеми подробностями. Обратите внимание на такие поля, как _COMM (имя команды), _EXE (путь к исполняемому файлу), _PID (идентификатор процесса), _UID (идентификатор пользователя) и _SYSTEMD_UNIT (модуль systemd). Эти поля можно использовать для более точной фильтрации.

Например, чтобы найти записи от конкретного процесса sshd с известным PID (вы можете получить PID из предыдущего вывода journalctl -u sshd.service):

journalctl _SYSTEMD_UNIT=sshd.service _PID=<PID_NUMBER>

Замените <PID_NUMBER> на реальный PID, который вы наблюдали в записях sshd. Например, если вы видели sshd[1433], вы бы использовали _PID=1433.

journalctl _SYSTEMD_UNIT=sshd.service _PID=1433

Эта команда демонстрирует, как можно комбинировать несколько фильтров для сужения поиска в журнале.

Настройка постоянного хранилища системного журнала

На этом этапе вы узнаете, как настроить системный журнал для сохранения данных после перезагрузки. По умолчанию Red Hat Enterprise Linux 9 хранит системный журнал в каталоге /run/log, который является временной файловой системой. Это означает, что все записи журнала очищаются после перезагрузки системы. Чтобы сохранить исторические данные журналов, необходимо настроить службу systemd-journald для постоянного хранения.

Конфигурация для systemd-journald находится в файле /etc/systemd/journald.conf. Параметр Storage в этом файле определяет, будут ли журналы храниться во временном или постоянном режиме.

Параметру Storage можно присвоить одно из следующих значений:

  • persistent: Хранит журналы в каталоге /var/log/journal, который сохраняется после перезагрузки. Если этот каталог не существует, systemd-journald создаст его.
  • volatile: Хранит журналы во временном каталоге /run/log/journal. Данные в /run не сохраняются после перезагрузки. Это поведение по умолчанию, если Storage не задан явно и /var/log/journal не существует.
  • auto: Если каталог /var/log/journal существует, systemd-journald использует постоянное хранилище; в противном случае он использует временное хранилище. Это значение по умолчанию, если вы не задаете параметр Storage.
  • none: Хранилище не используется. Все журналы отбрасываются, хотя их все еще можно пересылать.

Давайте изменим файл /etc/systemd/journald.conf, чтобы включить постоянное хранение журнала. Вы будете использовать sudo nano для редактирования этого файла.

sudo nano /etc/systemd/journald.conf

Внутри редактора nano найдите раздел [Journal]. Раскомментируйте строку Storage (удалите # в начале) и установите ее значение в persistent.

Ваш файл должен выглядеть примерно так (показаны только соответствующие строки):

[Journal]
Storage=persistent
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=1000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#Audit=no
#FlushIntervalSec=
#SyncIntervalSec=
#ReadKMsg=yes
#Audit=yes

После внесения изменений сохраните файл, нажав Ctrl+X, затем Y для подтверждения сохранения и Enter для подтверждения имени файла.

Чтобы изменения вступили в силу, необходимо перезапустить службу systemd-journald. Поскольку эта среда является контейнером Docker, systemctl недоступен. Вместо этого мы имитируем эффект перезапуска службы, убедившись, что каталог /var/log/journal создан и имеет правильные права доступа, что systemd-journald сделал бы при перезапуске в неконтейнеризированной среде.

Сначала давайте создадим каталог, если он не существует, и установим соответствующие права доступа.

sudo mkdir -p /var/log/journal
sudo chown root:systemd-journal /var/log/journal
sudo chmod 2755 /var/log/journal

Теперь, чтобы убедиться, что постоянное хранилище настроено и активно, вы можете проверить, содержит ли каталог /var/log/journal подкаталоги с шестнадцатеричными именами и файлы .journal. Эти файлы хранят структурированные и индексированные записи журнала.

ls -l /var/log/journal

Вы должны увидеть подкаталог с длинным шестнадцатеричным именем (например, 4ec03abd2f7b40118b1b357f479b3112). Внутри этого каталога вы найдете файлы .journal.

ls -l /var/log/journal/<YOUR_HEX_ID>/

Замените <YOUR_HEX_ID> на фактический шестнадцатеричный ID, который вы нашли в выводе предыдущей команды ls. Например:

ls -l /var/log/journal/4ec03abd2f7b40118b1b357f479b3112/

Вы должны увидеть файлы, такие как system.journal и, возможно, user-1000.journal.

Даже при наличии постоянных журналов система не хранит все данные вечно. В журнале есть встроенный механизм ротации. Вы можете настроить ограничения по размеру и периоды хранения в файле /etc/systemd/journald.conf с помощью таких параметров, как SystemMaxUse, SystemKeepFree, SystemMaxFileSize и MaxRetentionSec.

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

Чтобы вывести список всех распознанных событий загрузки системы:

journalctl --list-boots

Вы увидите список ID загрузок и соответствующие им временные диапазоны. Текущая загрузка обычно имеет номер 0. Предыдущие загрузки — это отрицательные числа (-1, -2 и т.д.).

Чтобы просмотреть записи только из текущей загрузки системы:

journalctl -b

Чтобы просмотреть записи из предыдущей загрузки (например, той, что была перед текущей, обычно -1):

journalctl -b -1

На этом настройка постоянного хранилища журнала завершена.

Поддержание точного системного времени с помощью timedatectl и chronyd

На этом этапе вы узнаете, как поддерживать точное системное время с помощью команды timedatectl, и поймете роль службы chronyd. Точный отсчет времени критически важен для логирования, безопасности и многих сетевых служб.

1. Использование timedatectl для управления системным временем и часовыми поясами:

Команда timedatectl предоставляет обзор текущих системных настроек, связанных со временем, включая местное время, всемирное время (UTC), время RTC, часовой пояс и статус синхронизации NTP.

Давайте проверим текущие настройки времени вашей системы:

timedatectl

Вы должны увидеть вывод, похожий на этот (точное время и дата будут отражать ваше текущее системное время):

               Local time: Sun 2025-06-15 21:46:11 EDT
           Universal time: Mon 2025-06-16 01:46:11 UTC
                 RTC time: Mon 2025-06-16 01:46:10
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Вы можете вывести список всех доступных часовых поясов с помощью опции list-timezones:

timedatectl list-timezones | less

Нажмите q, чтобы выйти из less. Часовые пояса названы в соответствии с базой данных часовых поясов IANA (Internet Assigned Numbers Authority), обычно по континенту/океану, а затем по крупнейшему городу.

Чтобы изменить часовой пояс системы, используйте опцию set-timezone. Например, давайте изменим часовой пояс на America/Phoenix. Для этого вам потребуются права sudo.

sudo timedatectl set-timezone America/Phoenix

Теперь проверьте изменения:

timedatectl

Вы должны увидеть, что часовой пояс обновлен до America/Phoenix.

Прежде чем вручную изменять системное время, необходимо временно отключить синхронизацию NTP. Опция set-ntp включает или отключает синхронизацию NTP для автоматической корректировки времени. Она принимает аргумент true или false. Давайте на время отключим синхронизацию NTP (мы снова включим ее позже).

sudo timedatectl set-ntp false

Проверьте статус службы NTP:

timedatectl

Вы должны увидеть NTP service: inactive.

Теперь вы можете вручную установить текущее время системы с помощью опции set-time. Формат: "YYYY-MM-DD hh:mm:ss", но вы можете опустить дату или время. Давайте установим время 09:00:00 (для текущей даты).

sudo timedatectl set-time 09:00:00

Проверьте изменение времени:

timedatectl

2. Понимание и настройка службы chronyd:

Служба chronyd — это демон, который поддерживает точность часов реального времени (RTC) системы, синхронизируя их с серверами протокола сетевого времени (NTP). Это NTP-клиент по умолчанию в Red Hat Enterprise Linux.

Файл конфигурации для chronyd/etc/chrony.conf. По умолчанию он использует публичные NTP-серверы. В реальном сценарии вы можете настроить его на использование внутренних NTP-серверов.

Давайте просмотрим файл chrony.conf по умолчанию.

cat /etc/chrony.conf

Вы увидите строки, начинающиеся с server или pool, которые определяют источники NTP. Опция iburst рекомендуется, так как она быстро выполняет четыре измерения для более точной начальной синхронизации.

stratum (стратум) источника времени NTP указывает на его качество. stratum 0 — это эталонные часы, stratum 1 напрямую подключены к эталонным часам, а stratum 2 синхронизируются с сервером stratum 1.

Поскольку systemctl недоступен в этой среде контейнера, мы не можем напрямую перезапустить chronyd для применения изменений конфигурации. Однако мы можем имитировать изменение конфигурации, изменив файл.

Давайте снова включим синхронизацию NTP с помощью timedatectl.

sudo timedatectl set-ntp true

Снова проверьте статус службы NTP:

timedatectl

Вы должны увидеть NTP service: active.

Команда chronyc выступает в качестве клиента для службы chronyd. Вы можете использовать ее для мониторинга статуса синхронизации. Команда chronyc sources показывает текущие источники времени и их статус синхронизации.

chronyc sources -v

Вывод покажет подробную информацию об источниках NTP. Звездочка * в поле S (состояние источника) указывает на источник, с которым chronyd синхронизирован в данный момент.

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 100.100.61.88                 1   5   377    16  +1824us[+2180us] +/-   85ms
...output omitted...

Этот вывод подтверждает, что ваша система активно синхронизирует свое время с NTP-сервером.

Резюме

В этой лабораторной работе мы получили полное представление об архитектуре системных журналов в Red Hat Enterprise Linux 9, сосредоточившись на взаимодействии между systemd-journald и rsyslog. Мы узнали, что systemd-journald собирает и хранит структурированные, индексированные бинарные журналы в journal, в то время как rsyslog обрабатывает эти сообщения и записывает их в традиционные файлы журналов в /var/log. Мы изучили ключевые файлы журналов, такие как /var/log/messages, /var/log/secure и другие, а также попрактиковались в просмотре и фильтрации файлов syslog с помощью стандартных команд. Мы также научились вручную отправлять пользовательские сообщения syslog.

Кроме того, мы углубились в исследование и фильтрацию записей системного журнала с помощью journalctl, поняв его возможности для доступа к подробным системным событиям. Затем мы настроили постоянное хранилище системного журнала, чтобы обеспечить сохранение данных журналов после перезагрузки. Наконец, мы рассмотрели поддержание точного системного времени с помощью timedatectl и chronyd, осознав его важность для точных временных меток журналов и общей целостности системы. Эта лабораторная работа предоставила необходимые навыки для эффективного анализа системы и устранения неполадок посредством надежного управления журналами.