👋🏻 Привет! С вами снова Merion Academy - платформа доступного IT образования. Сегодня мы разберем логирование событий в Linux. Гооу.
В данной статье мы рассмотрим стандартный демон логирования syslog. Он немного устарел, но с ним разобраться стоит потому, что все современные системы логирования построены по такому же принципу и имеют лишь небольшие отличия и небольшие улучшения, немного расширенный функционал.
Система логирования в любой операционной системе играет важнейшую роль. Это связано с тем, что с помощью нее осуществляется разбор ошибок, поиск неисправностей и восстановление работоспособности сервисов. Очень часто бывает так что операционная система или сервисы ведут себя не так, как мы ожидаем от них и лучший способ разобраться с проблемой заглянуть в журнал логирования.
Мы разберем, как настраивается стандартный демон syslog, понятия источников событий и приоритета событий. В операционной системе Windows тоже есть данный функционал, но развит не так хорошо, как в операционных системах Linux.
Итак, стандарт конфигурации событий выглядит следующим образом:
Мы пишем для каждого источника события, источник, приоритет и куда такие события отправлять, т.е действие. Формат:
источник.приоритет назначение
Источников в операционной системе Linux может быть много, более 20 штук. Самые популярные представлены на картинке.
В операционной системе Windows, есть 3 уровня приоритетов - информационные, предупреждения и ошибка. У операционной системы Linux приоритетов 8 штук, разберем их:
- Emergency – чрезвычайная ситуация
- Alert – тревога
- Critical – критическое событие
- Error – ошибка
- Warning – предупреждение
- Notice – замечание
- Info – информационное сообщение
- Debug – отладочное событие
И последняя колонка на картинке – это примеры куда мы можем записывать те или иные события:
- Файл – мы можем записывать в журнал
- Консоль – мы можем выводить в консоль
- Конвейер – мы можем передавать с помощью конвейера сразу следующей команде
- Удаленная система – можем передавать удаленной системе
- Группа пользователей – можем передавать группе пользователей
К сожалению, открыть файл cat /etc/syslog.conf (CentOS 5) не получится, т.к является устаревшим, но подходит для объяснения принципа настройки. Например современный rsyslog, настраивается практически идентично в разных системах, находится в разных местах на виртуальной машине, в Ubuntu 20.04 расположен в /etc/rsyslog.d/ 50-default.conf
Примерно таким образом выглядит конфигурационный файл. В данном файле все настройки демона. Мы можем увидеть, что все события ядра kern.* выводятся в файл /var/log/kern.log. Символ * говорит о том, что события с любым приоритетом. Мы можем изменить указав явно приоритет например kern.info или kern.debug, можем так же изменить куда выводить например в консоль /dev/console.
У нас в файле есть строчка закомментированная *.info; *.=notice;*.=warn;\ - отправлять в /var/log/messages, и если мы ее раскомментируем, то данные все события будут уходить в указанный файл.
Есть строчка auth,authpriv.* /var/log/auth.log, которая означает, что все события авторизации, в том числе и с вводом паролей будут записываться в отдельный файл /var/log/auth.log, это сделано специально, в целях информационной безопасности. На отдельный файл проще поставить особые права доступа.
Есть в файле еще интересная строчка mail.* -/var/log/mail.log, которая говорит нам о том, что все почтовые события будут записываться в журнал /var/log/mail.log.
Обратите внимание, что некоторые файлы имеет значок - перед указанием пути. Этот символ указывает демону на то, что после использования данного журнала, не нужно выгружать из оперативной памяти. Это сделано для того, чтобы более оперативно работать с журналами и в оперативной памяти всегда есть кэш данного файла. Есть и минус такого подхода. Если у нас случится паника ядра, т.е аппаратная ошибка и система вылетит, то те события, которые находились в оперативке, не успеют сбросится на жесткий диск и мы их потеряем.
Файлы логов можно читать командой cat, правда не все форматы и не все логи, но популярными являются утилиты less и tail. Причем утилита tail с ключем -f позволяет, читать файл лога в реальном времени. Пользоваться утилитами достаточно просто:
less [опции] [файл_лога]
tail [опции] [файл_лога]
Но работая с данными утилитами не все форматы можно прочитать.
Можно порекомендовать для чтения логов утилиту, которая сможет прочесть практически любой формат лога - lnav. Устанавливается стандартно - apt install lnav -y.
Синтаксис утилиты - lnsv [опции] [файл_лога]
lnav dmesg
Получаем вот такой красивый вывод команды. Дополнительно утилита раскрашивает лог для удобства чтения.
--
До встречи на нашей образовательной платформе.
Merion Academy - платформа доступного IT образования.