Утилита просмотр логов linux

Утилита просмотр логов linux

Если вы столкнулись с проблемами в работе сервера, первое, что нужно сделать — посмотреть логи Linux. В системный журнал записываются диагностические сообщения, поступающие от различных компонентов операционной системы, таких как ядро или службы, поэтому с большой долей вероятности причина сбоев будет найдена.

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

  1. emerg — авария, наивысший приоритет;
  2. alert — тревога;
  3. crit — критическое событие;
  4. err — ошибка;
  5. warn — внимание;
  6. notice — уведомление;
  7. info — информационное сообщение;
  8. debug — отладочная информация;

На сегодняшний день в Linux основными службами сбора логов являются rsyslog и systemd-journald, они работают независимо друг от друга и входят в состав большинства современных дистрибутивов.

rsyslog

Журналы службы находятся в директории “/var/log/” в виде обычных текстовых файлов. В зависимости от типа события, сообщения записываются в разные файлы. Например файл “/var/log/auth.log” содержит информацию о входе пользователей в систему, а в файл “/var/log/kern.log” записываются сообщения ядра. В разных дистрибутивах названия файлов могут отличаться, поэтому для точного понимания куда именно происходит запись сообщений рассмотрим файл конфигурации “/etc/rsyslog.d/50-default.conf”.

Сбор логов Linux утилитой rsyslog

Правила описывают место хранения логов в зависимости от типа сообщения. В левой части строки указан тип сообщения в формате “[Источник].[Приоритет]”, а в правой части имя файла журнала. При записи типа сообщения можно применять символ “*”, обозначающий любое значение или параметр “none”, обозначающий исключение из списка. Рассмотрим более подробно первые два правила.

“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”

Первое правило означает, что все сообщения принятые от механизма авторизации будут записаны в файл “/var/log/auth.log”. В этом файле будут зарегистрированы все попытки входа пользователей в систему, как удачные так и не удачные. Второе правило говорит о том, что все сообщения, кроме тех, которые связаны с авторизацией будут записаны в файл “/var/log/syslog”. Именно к этим файлам приходится обращаться наиболее часто. Следующие правила определяют место хранения журналов ядра “kern.*” и почтовой службы “mail.*

Журналы логов можно открыть любой утилитой для просмотра текста, например less, cat, tail. Откроем файл “/var/log/auth.log

Утилита less

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

  1. Дата и время регистрации сообщения — “Feb 12 06:18:33”
  2. Имя компьютера, с которого пришло сообщение — “vds”
  3. Имя программы или службы, к которой относится сообщение — “sshd”
  4. Идентификатор процесса, отправившего сообщение — [653]
  5. Текст сообщения — “Accepted password for mihail from 188.19.42.165 port 2849 ssh2”
Читайте также:  Linux programming interface book

Это был пример успешного подключения по ssh.
А так выглядит неудачная попытка:

Запись в лог-файле Линукс о неудачной попытке авторизации SSH

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

Читаем логи Linux

Откроем файл /var/log/syslog

Как правильно прочитать лог Linux

На скриншоте выделено сообщение о выключении сетевого интерфейса.

Для поиска нужной информации в больших текстовых файлах можно использовать утилиту grep. Найдем все сообщения от службы pptpd в файле “/var/log/syslog

Используем утилиту grep для поиска информации в больших файлах логов

Во время диагностики можно использовать утилиту tail, которая выводит последние строки в файле. Команда “tail -f /var/log/syslog” позволит наблюдать запись логов в реальном времени.

Служба rsyslog является очень гибкой, высокопроизводительной и может использоваться для сбора логов как на локальных системах, так и на уровне предприятия. Полную документацию можно найти на официальном сайте https://www.rsyslog.com/

Ротация логов Linux

Запись логов происходит непрерывно и размер файлов постоянно растет. Механизм ротации обеспечивает автоматическое архивирование старых журналов и создание новых. В зависимости от правил, обработка журналов может выполняться ежедневно, еженедельно, ежемесячно или при достижении файлом определенного размера. По мере создания новых архивов, старые могут быть просто удалены или предварительно отправлены по электронной почте. Ротация выполняется утилитой logrotate. Основная конфигурация находится в файле “/etc/logrotate.conf”, также обрабатывается содержимое файлов в директории “/etc/logrotate.d/

Новые правила можно записывать в основной файл конфигурации, но более правильным будет создание отдельного файла в директории “/etc/logrotate.d/” По умолчанию в директории уже содержится несколько файлов.

Утилита logorotate

Рассмотрим файл “/etc/logrotate.d/rsyslog”, который содержит правила ротации для журналов службы rsyslog.

файл “/etc/logrotate.d/rsyslog”

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

  • rotate 7 — необходимо постоянно хранить 7 файлов
  • daily — ежедневно будет создаваться новый файл
  • compress — старые файлы необходимо архивировать.

Настраиваем ротацию логов в Линукс

На скриншоте видно, что в каталоге “/var/log/” находится основной журнал “syslog” и семь архивов, что соответствует правилам ротации.

Более подробное описание по настройке утилиты logrotate можно найти в мануале, выполнив команду “man logrotate

journald

Служба сбора логов systemd-journald является частью системы инициализации systemd. Файлы журнал хранятся в директории “/var/log/journal/” в специальном формате и могут быть открыты с помощью утилиты journalctl. Формат записей такой же как у службы rsyslog.

Читайте также:  Linux view kernel version

Команда journalctl без параметров выводит на экран все записи, но учитывая, что объем журнала может достигать нескольких гигабайт, такой способ просмотра не подходит для практического применения. Рассмотрим некоторые опции утилиты.

  • вывод записей с момента последней загрузки
    journalctl -b
  • вывод записей за определенный период времени
    journalctl -S «2020-02-17 12:00» -U «2020-02-17 12:10»
  • вывод записей, принятых от определенной службы
    journalctl -u pptpd
  • вывод сообщений ядра
    journalctl -k
  • вывод сообщений с определенным приоритетом, в данном случае будут выведены ошибки и более высокие приоритеты(crit, alert, emerg).
    journalctl -p err
  • вывод сообщений в реальном времени
    journalctl -f

Для более гибкого поиска опции можно совмещать. Выведем все ошибки службы pptpd

Пример вывода всех ошибок pptpd в лог-файлах

Если в качестве аргумента указать путь к исполняемому файлу, утилита выведет все сообщения, отправленные этим файлом. Выведем сообщения, отправленные файлом “/usr/bin/sudo” начиная с 04:15 18-го февраля 2020 года. Фактически будут выведены все команды, выполненные с повышенными правами.

journalctl -S «2020-02-18 04:15» /usr/bin/sudo

Учимся читать логи Линукс

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

Для ограничения объема журнала размером 1Gb выполним команду

Открытие бинарных файлов

В заключении рассмотрим несколько специальных файлов в директории “/var/log/”, в которых регистрируются попытки входа пользователей в систему. Это бинарные файлы, которые могут быть открыты только специальными утилитами.

/var/log/wtmp — содержит информацию об успешном входе пользователей в систему, для открытия используется утилита last

утилита last

/var/log/btmp — в файле регистрируются все неудачные попытки входа в систему, открывается командой lastb с повышенными правами. Параметр -n определяет количество выводимых строк начиная с конца файла.

командой lastb

/var/log/lastlog — содержит время последнего входа для каждой учетной записи, может быть открыт одноименной утилитой lastlog

Источник

Отслеживание логов Linux в реальном времени

Отслеживание логов Linux в реальном времени

При просмотре лог-файлов (файлов журналов) в Linux иногда бывает нужно мониторить новые записи в логах в реальном времени. То есть вы указываете, какой лог-файл (или файлы) вы хотите просматривать и в реальном времени отслеживаете новые записи в этом файле.

Мониторинг лог-файлов командой tail

Если выполнить команду tail ИмяФайла без каких-либо дополнительных аргументов, то будет выведено 10 последних строк файла, и команда завершит свою работу.

Для того, чтобы команда tail непрерывно выводила последние записи в файле, то есть, если в файле появились новые записи, то информация на экране обновлялась, используется опция -f :
tail -f ИмяЛогФайла

Выполним команду tail -f для вывода лог-файла /var/log/syslog

Так как используется опция -f , команда tail не завершает свою работу, а ожидает появления в лог-файле новых записей. Как только в лог-файл будут добавлены новые записи, они сразу же будут отображены в терминале.

Чтобы прервать выполнение команды, нажмите сочетание клавиш Ctrl+C

Читайте также:  Arch linux install all packages

Отслеживание логов командой tail f

Команда tailf

Аналогом команды tail -f является команда tailf

Важным отличием команды tailf от tail -f является то, что tailf не обращается к файлу, когда он не изменяется. В следствии этого время доступа к файлу не обновляется и система не выполняет постоянный сброс файла на диск, когда файл не обновляется.

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

tail -F. Если файл был переименован или удален

Обычно в Linux лог-файлы записываются не до бесконечности, иначе такой файл было бы очень неудобно в дальнейшем использовать. Вместо этого применяется так называемая ротация файлов. Когда лог-файл становится большим, то он либо удаляется, либо переименовывается (создается резервная копия файла), а дальнейшие сообщения начинают записываться в новый, пустой файл.

У команды tail есть две опции: -f и -F

  • Если используется опция -f и происходит переименование, отслеживаемого файла, то команда tail продолжает отслеживать уже переименованный файл. Команда tail в данном случае привязывается к идентификатору (inode) файла.
  • Если используется опция -F и происходит переименование, отслеживаемого файла, то команда tail определит это, и как только будет создан новый лог-файл (с тем именем, которое мы указали команде tail), команда tail начнет отслеживать этот новый файл.

Будем отслеживать лог-файл /var/log/apache2/error.log . Выполняем команду tail с опцией -F

tail -F /var/log/apache2/error.log

Если система переместит (переименует) файл error.log в файл error.log.1 и создаст новый файл error.log , то наша команда tail продолжит отслеживать уже новый файл error.log

Если бы мы в этом примере использовали опцию -f , то команда tail продолжила бы отслеживать файл error.log.1 , который для нас уже неактуален при просмотре логов в реальном времени.

Отслеживание нескольких лог-файлов одновременно

Команда tail поддерживает отслеживание нескольких файлов одновременно. Для этого необходимо указать имена файлов через пробел.

tail -f /var/log/apache2/error.log /var/log/apache2/access.log

Как только какой-либо из файлов меняется, на экран выводится имя этого файла и новые записи в нем.

Утилита multitail

Для одновременного отслеживания нескольких лог-файлов существует очень удобная утилита multitail

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

Утилиту multitail можно установить из штатных репозиториев вашего дистрибутива. Для установки выполните команду (выберите соответствующую команду для вашего дистрибутива):

sudo apt install multitail sudo yum install multitail sudo dnf install multitail
multitail /var/log/apache2/access.log /var/log/apache2/error.log

Для выхода из утилиты нажмите клавишу q

Источник

Оцените статью
Adblock
detector