Учебники

Linux Admin — Управление журналами

systemd изменил способ ведения системного журнала в CentOS Linux. Вместо того, чтобы каждый демон в системе размещал журналы в отдельных местах, а не использовал такие инструменты, как tail или grep, в качестве основного способа сортировки и фильтрации записей журнала, journald предоставил единую точку администрирования для анализа системных журналов.

Основными компонентами ведения журнала systemd являются: journal, jounralctl и journald.conf

journald — это основной демон ведения журнала, который настраивается путем редактирования journald.conf, а journalctl используется для анализа событий, зарегистрированных в journald .

События, регистрируемые journald, включают в себя: события ядра, пользовательские процессы и сервисы демонов.

Установите правильный системный часовой пояс

Перед использованием journalctl мы должны убедиться, что наше системное время установлено на правильное время. Для этого мы хотим использовать timedatectl .

Давайте проверим текущее системное время.

[root@centos rdc]# timedatectl status 
Local time: Mon 2017-03-20 00:14:49 MDT 
Universal time: Mon 2017-03-20 06:14:49 UTC 
RTC time: Mon 2017-03-20 06:14:49 
Time zone: America/Denver (MDT, -0600) 
NTP enabled: yes 
NTP synchronized: yes 
RTC in local TZ: no 
DST active: yes 
Last DST change: DST began at 
              Sun 2017-03-12 01:59:59 MST 
              Sun 2017-03-12 03:00:00 MDT 
Next DST change: DST ends (the clock jumps one hour backwards) at 
              Sun 2017-11-05 01:59:59 MDT 
              Sun 2017-11-05 01:00:00 MST
              
[root@centos rdc]#

В настоящее время система соответствует местному часовому поясу. Если вашей системы нет, давайте установим правильный часовой пояс. После изменения настроек CentOS автоматически рассчитает смещение часового пояса относительно текущего часового пояса, сразу же настроив системные часы.

Давайте перечислим все часовые пояса с timedatectl

[root@centos rdc]# timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

Это оспариваемый вывод timedatectl list-timezones . Чтобы найти определенный местный часовой пояс, можно использовать команду grep —

[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York" 
America/New_York
[root@centos rdc]#

Метка, используемая CentOS, обычно представляет страну / регион с подчеркиванием вместо пробела (New_York против «New York»).

Теперь давайте установим наш часовой пояс —

[root@centos rdc]# timedatectl set-timezone "America/New_York"

[root@centos rdc]# date 
Mon Mar 20 02:28:44 EDT 2017

[root@centos rdc]#

Ваши системные часы должны автоматически настроить время.

Используйте journalctl для анализа логов

Общие параметры командной строки при использовании journalctl

переключатель действие
-k Выводит только сообщения ядра
-u Списки по конкретным единицам (httpd, sshd и т. Д.)
-b Загружает смещение метки
Регистрирует выходной формат
-п Фильтры по типу журнала (имя или номер)
-F Имя поля или значение поля
—универсальное глобальное время Время в смещении UTC
—поскольку Фильтровать по таймфрейму

Изучите журналы загрузки

Сначала мы рассмотрим и настроим журналы загрузки в CentOS Linux. Первое, что вы заметите, это то, что CentOS по умолчанию не хранит журнал загрузки, который сохраняется при перезагрузках.

Чтобы проверить журналы загрузки для каждого экземпляра перезагрузки, мы можем выполнить следующую команду:

[root@centos rdc]# journalctl --list-boots 
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT

[root@centos rdc]#  

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

[root@centos rdc]# journalctl --list-boots 
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
 
[root@centos rdc]#

Теперь давайте рассмотрим последний экземпляр журнала загрузки —

root@centos rdc]# journalctl -b -5 
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M 
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 
(builder@kbuilder.dev.
Mar 19 22:01:57 localhost.localdomain kernel: Command line: 
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

Выше сжатый вывод из нашей последней загрузки. Мы также можем сослаться на журнал загрузки по часам, дням, неделям, месяцам и даже годам. Однако по умолчанию CentOS не хранит постоянные журналы загрузки. Чтобы обеспечить постоянное хранение загрузочных журналов, нам нужно внести несколько изменений в конфигурацию:

  • Сделать центральные точки хранения для загрузочных журналов
  • Дайте соответствующие разрешения новой папке журнала
  • Настройте journald.conf для постоянного ведения журнала

Настройка местоположения загрузки для постоянных журналов загрузки

Исходное место journald будет хотеть хранить постоянные журналы загрузки — / var / log / journal . Так как это не существует по умолчанию, давайте создадим это —

[root@centos rdc]# mkdir /var/log/journal

Теперь давайте дадим каталогу соответствующие права доступа к journald daemon —

systemd-tmpfiles --create --prefix /var/log/journal

Наконец, давайте скажем journald, что он должен хранить постоянные журналы загрузки. В vim или вашем любимом текстовом редакторе откройте /etc/systemd/jounrald.conf « .

# See journald.conf(5) for details.  
[Journal]=Storage=peristent

Строка, с которой мы имеем дело, это Storage = . Сначала удалите комментарий # , затем измените на Storage = persistent, как показано выше. Сохраните и перезагрузите систему CentOS и позаботьтесь о том, чтобы при запуске списка загрузок journalctl было несколько записей.

Примечание . Постоянно изменяющийся идентификатор компьютера, такой как у поставщика VPS, может привести к сбою journald при сохранении постоянных загрузочных журналов. Есть много обходных путей для такого сценария. Лучше ознакомиться с текущими исправлениями, опубликованными на форумах CentOS Admin, чем следовать надежным советам тех, кто нашел правдоподобные обходные пути VPS.

Чтобы изучить конкретный журнал загрузки, нам просто нужно получить каждое смещение с помощью journald —list-boots смещение с ключом -b . Таким образом, чтобы проверить второй журнал загрузки, мы будем использовать —

journalctl -b -2

Значение по умолчанию для -b без указанного смещения журнала загрузки всегда будет текущим журналом загрузки после последней перезагрузки.

Анализировать журналы по типу журнала

События из journald нумеруются и подразделяются на 7 отдельных типов —

0 - emerg   :: System is unusable 
1 - alert   :: Action must be taken immediatly    
2 - crit    :: Action is advised to be taken immediatly 
3 - err     :: Error effecting functionality of application 
4 - warning :: Usually means a common issue that can affect security or usilbity 
5 - info    :: logged informtation for common operations 
6 - debug   :: usually disabled by default to troubleshoot functionality

Следовательно, если мы хотим увидеть все предупреждения, через journalctl можно выполнить следующую команду:

[root@centos rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL  440BX    06040000 VMW  01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL  440BX    06040000 PTL  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD  Custom   06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD  $SBFTBL$ 06040000  LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742
(v01 PTLTD  ? APIC   06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C
(v01 PTLTD  $PCITBL$ 06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG  06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges: 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA      [mem 0x000010000x00ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA32    [mem 0x010000000xffffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   Normal   empty 
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node 
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x000010000x0009dfff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x001000000x95edffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x95f000000x95ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on.  Total pages: 60 
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32 
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'

Выше показаны все предупреждения за последние 4 дня в системе.

Новый способ просмотра и просмотра журналов с помощью systemd требует небольшой практики и исследований, чтобы ознакомиться с ними. Однако, учитывая разные форматы вывода и особое внимание к тому, чтобы сделать все упакованные журналы демонов универсальными, его стоит принять. journald предлагает большую гибкость и эффективность по сравнению с традиционными методами анализа журналов.