🐧 Как фильтровать логи systemd с помощью journalctl с примерами |

🐧 Как фильтровать логи systemd с помощью journalctl с примерами

Мануал

Логи – это файлы, содержащие важную системную информацию.

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

Существует несколько файлов логов, которые содержат различную информацию.

Например, существует файл системного логов, содержащий сообщения безопасности и задания cron.

Существует 3 метода, используемых службами для записи журналов. Это:

  • Прямая запись – службы записывают информацию непосредственно в файлы журналов. К ним относятся Apache, Samba и т.д.
  • rsyslogd – может быть описан как усовершенствование syslogd. Syslogd – это традиционный менеджер демонов Linux, устанавливаемый из пакета sysklogd. С несколькими улучшениями, rsyslogd был представлен для управления централизованными журналами.
  • journald – появился вместе с внедрением систем. Эта служба интегрирована с systems и позволяет системным администраторам получать подробную информацию из журнала при управлении службами с помощью команды systemctl status.

Понимание работы systemd journald

Демон systemd-journalddaemon собирает и хранит информацию, которая поступает из нескольких источников.

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

Он сохраняет записи журнала независимо от их метаданных, размера или формата. Журнал событий хранится в двоичном формате, и доступ к нему можно получить с помощью команды journalctl.

Двоичные файлы хранятся в каталоге /run/log/journal или /var/log/journal.

В этом руководстве подробно описано, как фильтровать логи systemd с помощью journalctl и приведены примеры.

Настройка Journalctl

Journalctl может быть настроен так, чтобы предоставить вам желаемый сервис. Конфигурации, которые вы можете выполнить, описаны ниже.

Права

Journalctl позволяет просматривать журналы от имени пользователя root.

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

Для этого используется следующая команда:

sudo usermod -aG systemd-journal $USER

Сохранение логов Systemd journald

Журналы обычно хранятся по постоянному пути /var/log/journal.

Если этот путь существует, журналы сохранятся при перезагрузку системы.

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

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

Проверьте правильность создания пути с помощью команды tree:

$ sudo yum -y install tree
$ tree /var/log/journal
/var/log/journal
└── 9f4f62f8fec1487b98405a80137dfcef
    └── system.journal

1 directory, 1 file

Другой способ включить постоянное протоколирование – отредактировать файл conf и задать путь к хранилищу:

По умолчанию хранилище установлено на auto, как показано ниже:

$ cat /etc/systemd/journald.conf | grep Storage
#Storage=auto

Отредактируйте его так, чтобы он был постоянным, как показано ниже.

$ sudo vi /etc/systemd/journald.conf
[Journal]
Storage=persistent

Перезапустите службу journald

sudo systemctl restart systemd-journald.service

Как использовать Journalctl с Systemd в Linux

Теперь, имея необходимые конфигурации, вы можете использовать Journalctl для просмотра и фильтрации журналов systemd.

1. Основное использование

Чтобы показать все записи лога, используйте команду:

journalctl

Эта команда выведет все логи, созданные в системе.

Утилиту можно использовать с несколькими флагами для фильтрации журналов. Некоторые из используемых флагов описаны ниже.

2. Просмотр журналов во время выполнения

Подобно tail -f вы можете просматривать журналы в режиме реального времени с помощью Journalctl.

Эта команда позволяет просматривать новые сообщения systemd-journald в режиме реального времени.

Используется следующая команда:

journalctl -f

Чтобы прервать выполнение команды, используйте Ctrl+C.

3. Показать сообщения, связанные с загрузкой

С помощью Journalctl можно просматривать сообщения, связанные с загрузкой.

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

journalctl -b

Вы также можете вывести список предыдущих загрузочных сообщений с помощью команды ниже.

Но для этого необходимо настроить постоянный лог.

$ journalctl --list-boots
 0 8ce572d58a6247a9b9cf57c4efd67624 Fri 2022-04-15 09:27:55 EDT—Fri 2022-04-15 >

После появления списка просмотрите подробную информацию о загрузке. В

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

$ journalctl -b 0
-- Logs begin at Fri 2022-04-15 09:27:55 EDT, end at Fri 2022-04-15 09:33:32 EDT. --
Apr 15 09:27:55 localhost.localdomain kernel: Linux version 4.18.0-348.20.1.el8_5.x86_64 (mockbuild@koji.corp.cloudlinux.com) (gcc version >
Apr 15 09:27:55 localhost.localdomain kernel: Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-348.20.1.el8_5.x86_64 root=/dev/mapper/a>
Apr 15 09:27:55 localhost.localdomain kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
Apr 15 09:27:55 localhost.localdomain kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
Apr 15 09:27:55 localhost.localdomain kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
Apr 15 09:27:55 localhost.localdomain kernel: x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
Apr 15 09:27:55 localhost.localdomain kernel: x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'compacted' format.
Apr 15 09:27:55 localhost.localdomain kernel: BIOS-provided physical RAM map:
Apr 15 09:27:55 localhost.localdomain kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
Apr 15 09:27:55 localhost.localdomain kernel: BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
Apr 15 09:27:55 localhost.localdomain kernel: BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
Apr 15 09:27:55 localhost.localdomain kernel: BIOS-e820: [mem 0x0000000000100000-0x000000007ffdbfff] usable
Apr 15 09:27:55 localhost.localdomain kernel: BIOS-e820: [mem 0x000000007ffdc000-0x000000007fffffff] reserved
.....

11. Проверьте использование диска и памяти журналами журнала и выполните очистку

Если вы установили постоянное ведение лога, объем используемого диска может быть показан ниже:

$ journalctl --disk-usage
Archived and active journals take up 206.0M in the file system.

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

Диск можно очистить с помощью команды –vaccum-sizecommand.

Например, если уменьшить объем используемого файла журнала до 200 МБ, команда будет выглядеть следующим образом:

$ journalctl --vacuum-size=200M
Deleted archived journal /run/log/journal/9bf0fc6f60ce41149a0a540f52db9773/system@822262d9c350464d9b67a3fd4fa4b8d8-00000000003bf4d9-000591cb0a1ae4c4.journal (6.0M).
Vacuuming done, freed 6.0M of archived journals on disk.

Проверьте, были ли внесены изменения:

$ journalctl --disk-usage
Archived and active journals take up 200.0M on disk.

12. Просмотр логов в подробном режиме

Systemd можно просмотреть в режиме verbose Mode с помощью команды:

$ journalctl -o verbose
-- Logs begin at Fri 2022-04-15 09:27:55 EDT, end at Fri 2022-04-15 09:43:15 EDT. --
Fri 2022-04-15 09:27:55.664729 EDT [s=b7740adaec2e45a7ae7671427226140e;i=1;b=8ce572d58a6247a9b9cf57c4efd67624;m=105783;t=5dcb160d85159;x=6f>
    _SOURCE_MONOTONIC_TIMESTAMP=0
    _TRANSPORT=kernel
    PRIORITY=5
    SYSLOG_FACILITY=0
    SYSLOG_IDENTIFIER=kernel
    MESSAGE=Linux version 4.18.0-348.20.1.el8_5.x86_64 (mockbuild@koji.corp.cloudlinux.com) (gcc version 8.5.0 20210514 (Red Hat 8.5.0-4) (>
    _BOOT_ID=8ce572d58a6247a9b9cf57c4efd67624
    _MACHINE_ID=9f4f62f8fec1487b98405a80137dfcef
    _HOSTNAME=localhost.localdomain
Fri 2022-04-15 09:27:55.667768 EDT [s=b7740adaec2e45a7ae7671427226140e;i=2;b=8ce572d58a6247a9b9cf57c4efd67624;m=106362;t=5dcb160d85d38;x=50>
    _SOURCE_MONOTONIC_TIMESTAMP=0
    _TRANSPORT=kernel
    SYSLOG_FACILITY=0
    SYSLOG_IDENTIFIER=kernel
    _BOOT_ID=8ce572d58a6247a9b9cf57c4efd67624
    _MACHINE_ID=9f4f62f8fec1487b98405a80137dfcef
    _HOSTNAME=localhost.localdomain
    PRIORITY=6
    MESSAGE=Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-348.20.1.el8_5.x86_64 root=/dev/mapper/almalinux-root ro crashkernel=auto >
Fri 2022-04-15 09:27:55.667783 EDT [s=b7740adaec2e45a7ae7671427226140e;i=3;b=8ce572d58a6247a9b9cf57c4efd67624;m=106371;t=5dcb160d85d47;x=22>
    _SOURCE_MONOTONIC_TIMESTAMP=0
    _TRANSPORT=kernel
    SYSLOG_FACILITY=0
    SYSLOG_IDENTIFIER=kernel
    _BOOT_ID=8ce572d58a6247a9b9cf57c4efd67624
    _MACHINE_ID=9f4f62f8fec1487b98405a80137dfcef
    _HOSTNAME=localhost.localdomain
    PRIORITY=6
    MESSAGE=x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
...

Я надеюсь, что это руководство было полезным.

В этом руководстве приведено лишь несколько примеров того, как фильтровать журналы systemd с помощью journalctl.

Другие способы использования journalctl можно найти на странице journalctl man.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий