А АSunday 15 November 2020

Читаем журналы Linux #3.


Всем привет.

Показывая Как читать журналы также необходимо сказать Что именно читать. Поэтому сказав вчера "А" сегодня скажу "Б", т.е. продолжу серию заметок про журналы Linux.

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

Стандартные журналы.

По умолчанию журналы в Linux хранятся в  /var/log.

Для просмотра списка журналов, находящихся в данном каталоге, используйте команду ls -l /var/log.

Примеры журналов:

/var/log/syslog или /var/log/messages - глобальный системный журнал

/var/log/auth.log или /var/log/secure - информация об авторизации пользователей

/var/log/dmesg - оборудование и драйверы устройств

/var/log/anaconda.log - лог установки системы

/var/log/audit - лог демона auditd

/var/log/boot.log - лог загрузки системы

/var/log/cron - лог демона crond

Для каждого дистрибутива создается отдельный журнал менеджера пакетов:

/var/log/yum.log — для программ установленных с помощью yum в RedHat

/var/log/emerge.log — для ebuild-ов установленных из Portage с помощью emerge в Gentoo

/var/log/dpkg.log — для программ установленных с помощью dpkg в Debian и всем семействе родственных дистрибутивов

/var/log/mysql - логи базы данных MySQL

/var/log/apache2 - логи веб-сервера Apache

/var/log/nginx - логи веб-сервера NGINX


root@logs ~]# dmesg -l err

[1131424.604352] logs kernel: end_request: I/O error, dev sdc, sector 

[1131424.604352] logs kernel: Buffer I/O error on device sdc, logical 

[1131424.604352] logs kernel: Buffer I/O error on device sdc, logical 


Просмотр логов.

Как показано выше в каталоге /var/log находится несколько общих журналов:

wtmp

utmp

dmesg

messages

maillog или mail.log

spooler

auth.log или secure


Файлы wtmp и utmp отслеживают пользователей, вошедших и покинувших систему. Содержимое данных журналов нельзя читать с помощью простой команды «cat», для этого есть специальные команды, с которыми теперь нужно ознакомиться. Чтобы узнать, кто в текущий момент находится на сервере Linux, нужно использовать команду «who». Она извлекает информацию из /var/run/utmp (в CentOS и Debian) или из /run/utmp (в Ubuntu).

Это пример ее работы в CentOS:

[root@TestLinux ~]# who

root     tty1         2013-12-09 10:44

root      pts/0        2013-12-09 10:29 (10.0.2.2)

sysadmin pts/1        2013-12-09 10:31 (10.0.2.2)

joeblog  pts/2        2013-12-09 10:39 (10.0.2.2)


Команда «sysadmin» выводит историю входа пользователей:

[root@TestLinux ~]# last | grep sysadmin

sysadmin pts/1        10.0.2.2         Mon Dec  9 10:31   still logged in

sysadmin pts/0        10.0.2.2         Fri Nov 29 15:42 - crash  (00:01)

sysadmin pts/0        10.0.2.2         Thu Nov 28 17:06 - 17:13  (00:06)

sysadmin pts/0        10.0.2.2         Thu Nov 28 16:17 - 17:05  (00:48)

sysadmin pts/0        10.0.2.2         Thu Nov 28 09:29 - crash  (06:04)

sysadmin pts/0        10.0.2.2         Wed Nov 27 16:37 - down   (00:29)

sysadmin tty1                          Wed Nov 27 14:05 - down   (00:36)

sysadmin tty1                          Wed Nov 27 13:49 - 14:04  (00:15)

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

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

[root@TestLinux ~]# last reboot

Результат имеет примерно такой вид:

reboot   system boot  2.6.32-358.el6.x Mon Dec  9 10:27 - 10:47  (00:19)

reboot   system boot  2.6.32-358.el6.x Fri Dec  6 16:37 - 10:47 (2+18:10)

reboot   system boot  2.6.32-358.el6.x Fri Dec  6 16:28 - 16:36  (00:08)    reboot   system boot  2.6.32-358.el6.x Fri Dec  6 11:06 - 16:36  (05:29)

reboot   system boot  2.6.32-358.el6.x Mon Dec  2 17:00 - 16:36 (3+23:36)

reboot   system boot  2.6.32-358.el6.x Fri Nov 29 16:01 - 16:36 (7+00:34)

reboot   system boot  2.6.32-358.el6.x Fri Nov 29 15:43 - 16:36 (7+00:53)

...

...

wtmp begins Fri Nov 15 16:11:54 2013


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

[root@TestLinux ~]# lastlog

Результат на CentOS выглядит примерно так:

Username        Port        From            Latest

root            tty1                        Mon Dec  9 10:44:30 +1100 2013

bin                                        **Never logged in**

daemon                                     **Never logged in**

adm                                        **Never logged in**

lp                                         **Never logged in**

sync                                       **Never logged in**

shutdown                                   **Never logged in**

halt                                       **Never logged in**

mail                                       **Never logged in**

uucp                                       **Never logged in**

operator                                   **Never logged in**

games                                      **Never logged in**

gopher                                     **Never logged in**

ftp                                        **Never logged in**

nobody                                     **Never logged in**

vcsa                                       **Never logged in**

saslauth                                   **Never logged in**

postfix                                    **Never logged in**

sshd                                       **Never logged in**

sysadmin         pts/1    10.0.2.2         Mon Dec  9 10:31:50 +1100 2015

dbus                                       **Never logged in**


Для просмотра содержимого текстовых журналов можно использовать команды «cat», «head» или «tail». В приведенном ниже примере просматриваются последние 10 строк журнала /var/log/messages на Debian:

debian@debian:~$ sudo tail /var/log/messages

Вывод:

Dec 16 01:21:08 debian kernel: [    9.584074] Bluetooth: BNEP (Ethernet Emulation) ver 1.3

Dec 16 01:21:08 debian kernel: [    9.584074] Bluetooth: BNEP filters: protocol multicast

Dec 16 01:21:08 debian kernel: [    9.648220] Bridge firewalling registered

Dec 16 01:21:08 debian kernel: [    9.696728] Bluetooth: SCO (Voice Link) ver 0.6

Dec 16 01:21:08 debian kernel: [    9.696728] Bluetooth: SCO socket layer initialized

Dec 16 01:21:08 debian kernel: [    9.832215] lp: driver loaded but no devices found

Dec 16 01:21:08 debian kernel: [    9.868897] ppdev: user-space parallel port driver

Dec 16 01:21:11 debian kernel: [   12.748833] [drm] Initialized drm 1.1.0 20060810

Dec 16 01:21:11 debian kernel: [   12.754412] pci 0000:00:02.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, low) -> IRQ 11

Dec 16 01:21:11 debian kernel: [   12.754412] [drm] Initialized vboxvideo 1.0.0 20090303 for 0000:00:02.0 on minor 0

Завтра остановимся на механизме журналирования с демоном rsyslog.
Удачи.

No comments:

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное