Просмотр журнала событий linux

Просмотр файлов системных журналов с помощью интерфейса командной строки Linux

Оригинал: Viewing Linux Logs from the Command Line
Автор: Jack Wallen
Дата публикации: 9 декабря 2016 г.
Перевод: А.Панин
Дата перевода: 14 декабря 2016 г.

При возникновении проблем с системой в первую очередь тщательно исследуется содержимое файлов системных журналов. Jack Wallen научит вас делать это.

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

Причем вы можете обнаружить в своей системе большое количество таких файлов: это файлы с информацией о событиях, происходящих на уровне системы, ядра ОС, менеджера пакетов программного обеспечения, системы инициализации, веб-сервера Apache, сервера баз данных MySQL… То есть, практически для любого вообразимого системного программного компонента существует свой файл журнала.

Большая часть файлов системных журналов расположена в удобной директории: /var/log . В ней находятся все файлы журналов системы и служб, с которыми вы наверняка будете плотно работать в том случае, если у вас возникнут какие-либо проблемы с системой или с одной из ее основных служб. Файлы с информацией о событиях, происходящих на уровне отдельных приложений с графическим интерфейсом, могут располагаться в различных директориях (например, приложение Thunderbird сохраняет файлы с информацией о событиях аварийного завершения работы в директории «/.thunderbird/Crash Reports» ). Путь к директории, в которой будут храниться файлы журнала событий, происходящих на уровне каждого отдельного приложения с графическим интерфейсом, зависит от намерений разработчика этого приложения, а также возможности указания произвольного пути к этой директории.

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

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

Директория /var/log

Данная директория является одной из наиболее важных директорий Linux-систем. Откройте окно терминала и выполните с помощью него команду cd /var/log . Теперь выполните команду ls и ознакомьтесь со списком всех файлов системных журналов из этой директории (Рисунок 1).

Рисунок 1: Список файлов из директории /var/log.

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

Просмотр содержимого файла системного журнала с помощью утилиты less

Одним из наиболее важных файлов из директории /var/log является файл syslog . Этот файл содержит все сообщения о системных событиях за исключением сообщений о событиях, связанных с авторизацией. Предположим, что вы хотите просмотреть содержимое этого файла. Для этого вы можете просто выполнить команду less /var/log/syslog . Эта команда позволяет открыть файл системного журнала для чтения сообщений с начала. Вы можете использовать кнопки со стрелками для прокрутки содержимого файла по строкам, пробел для прокрутки содержимого файла по страницам или колесико мыши для быстрой прокрутки его содержимого.

Единственная проблема данного метода заключается в том, что размер файла syslog со временем может стать сравнительно большим; и, ввиду того, что интересующее вас сообщение будет наверняка находиться ближе к его концу, вам может быть неудобно листать строки или страницы до достижения конца файла. Поэтому после открытия файла syslog с помощью утилиты less вы также можете воспользоваться сочетанием клавиш Shift+g для немедленного перехода к концу файла. Конец файла будет обозначен с помощью специальной метки ( END ). После этого вы сможете пролистать содержимое файла вверх с помощью клавиш со стрелками или колесика мыши и найти интересующее вас сообщение.

Конечно же, такой подход не является самым эффективным.

Просмотр сообщений ядра ОС с помощью утилиты dmesg

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

Читайте также:  How to remove watermarks from windows

Рисунок 2: Проблема с внешним накопителем с интерфейсом USB требует дополнительного исследования.

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

Предположим, вам нужно получить сообщения уровня пользователей и вы хотите использовать критерий «user» . Для этого достаточно выполнить команду dmesg —facility=user . Если какие-либо из сообщений будут соответствовать этому критерию, они будут выведены.

В отличие от утилиты less , утилита dmesg выведет все содержимое кольцевого буфера и переместит вас в конец вывода. При этом вам ничто не помешает использовать колесико мыши для просмотра содержимого буфера окна терминала (конечно же, если такая функция поддерживается эмулятором терминала). Если же вы хотите передать вывод утилиты dmesg на ввод утилиты less , вы можете воспользоваться следующей командой:

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

Просмотр содержимого файла системного журнала с помощью утилиты tail

Утилита tail , скорее всего, является одним из наиболее полезных инструментов, для просмотра файлов системных журналов. tail осуществляет вывод завершающих строк текстовых файлов. Таким образом, если вы выполните команду tail /var/log/syslog , будет выведено несколько последних строк из файла системного журнала syslog .

Но подождите, веселье еще не закончилось. Утилита tail поддерживает параметр -f , позволяющий выполнять очень удобный трюк. В случае исполнения команды tail -f /var/log/syslog утилита tail будет отслеживать изменения файла системного журнала и выводить строки, записываемые в него. Это означает, что вы можете отслеживать сообщения, записываемые в файл системного журнала с помощью окна терминала практически в реальном времени (Рисунок 3).

Рисунок 3: Отслеживание изменений в файле /var/log/syslog с помощью утилиты tail.

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

Для завершения работы утилиты tail (в режиме отслеживании изменений в файле) достаточно воспользоваться сочетанием клавиш Ctrl+x .

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

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

Существуют и другие инструменты

Вы и сами сможете найти множество других утилит (и даже несколько отличных инструментов с графическим интерфейсом), позволяющих просматривать файлы системных журналов. Обратите внимание на такие утилиты, как more , grep , head , cat , multitail и System Log Veiwer , которые также могут пригодиться в случае возникновения необходимости в работе с файлами системных журналов.

Источник

Администрирование систем Linux. Журналирование событий

Глава 17. Журналирование событий

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

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

Во-вторых, рассматривается процесс настройки демона syslog, а также его тестирования с помощью утилиты logger .

Последняя часть главы в основном посвящена механизму ротации фалов журналов , а также содержит пояснения относительно использования команд tail -f и watch для отслеживания изменений файлов журналов .

17.1. Журналирование входов в систему

С целью облегчения процесса отслеживания входов пользователей в систему Linux может записывать необходимые данные в файлы журналов /var/log/wtmp , /var/log/btmp , /var/run/utmp и /var/log/lastlog .

17.1.1. Файл журнала /var/run/utmp (who)

Используйте утилиту who для просмотра содержимого файла /var/run/utmp. Эта утилита выводит информацию о пользователях, осуществивших вход в систему и в данный момент работающих с ней. Обратите внимание на то, что файл utmp находится в директории /var/run, а не /var/log.

17.1.2. Файл журнала /var/log/wtmp (last)

Содержимое файла журнала /var/log/wtmp обновляется силами программы login . Используйте утилиту last для просмотра содержимого файла журнала /var/run/wtmp.

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

17.1.3. Файл журнала /var/log/lastlog (lastlog)

Используйте утилиту lastlog для просмотра содержимого файла /var/log/lastlog.

17.1.4. Файл журнала /var/log/btmp (lastb)

Также существует утилита lastb , предназначенная для вывода содержимого файла /var/log/btmp . Содержимое этого файла обновляется программой login при вводе некорректного пароля, следовательно, он содержит информацию о неудачных попытках входа в систему. В файловых системах множества компьютеров данный файл может отсутствовать, в результате чего неудачные попытки входа в систему не будут журналироваться.

Читайте также:  Windows media players 9 series

Обычно данный файл удаляют по той причине, что пользователи иногда по ошибке вводят свой пароль вместо имени учетной записи, следовательно, читаемый всеми файл является потенциальной угрозой безопасности системы. Вы можете активировать механизм журналирования неудачных попыток входа в систему, просто создав файл с упомянутым именем. В этом случае исполнение команды chmod o-r /var/log/btmp позволит повысить защищенность системы.

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

17.1.5. Журналирование входов в систему с использованием утилит su и ssh

В зависимости от дистрибутива в файловой системе вашего компьютера вы также можете обнаружить файл /var/log/secure , который заполнен сообщениями от вспомогательных модулей auth и/или authpriv демона syslog. Этот файл журнала должен содержать информацию о неудачных попытках входа в систему с использованием утилиты su и/или ssh. В некоторых дистрибутивах данная информация сохраняется в файле /var/log/auth.log , поэтому следует проверить конфигурацию демона syslog.

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

17.2. Демон журналирования событий syslogd

17.2.1. О демоне syslogd

Стандартный метод журналирования событий в Linux связан с использованием демона syslogd . Демон syslogd был разработан Eric Allman для использования совместно с агентом передачи почты sendmail, но вскоре стал одним из множества стандартных приложений Unix, архитектура которого гораздо позднее была описана в рамках стандарта RFC 3164. Демон принимает сообщения от множества приложений (и системных утилит) по протоколу UDP на порту 514 и может дописывать сообщения в файлы журнала, выводить их, показывать сообщения в терминалах и передавать данные журнала другим демонам syslogd, работающим на других машинах. Конфигурация демона syslogd осуществляется с помощью файла /etc/syslog.conf .

17.2.2. О демоне rsyslogd

Новый демон журналирования событий носит имя rsyslogd (reliable and extended syslogd — надежный и расширяемый syslogd) и использует файл конфигурации /etc/rsyslogd.conf . Обратная совместимость синтаксиса данного файла конфигурации сохранена.

В каждой строке файла конфигурации используется идентификатор системы (facility) для определения источника сообщения. Также она содержит описание приоритета (priority) для определения важности сообщения и описание действия (action) для принятия решения о том, что нужно сделать с данным сообщением.

Новый демон rsyslog предоставляет много дополнительных возможностей, набор которых может быть расширен с помощью модулей. Модули позволяют, например, осуществлять экспорт сообщений из журнала syslog в базу данных.

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

17.2.4. Идентификаторы систем (facilities)

На странице руководства, доступной после исполнения команды man rsyslog.conf , можно найти информацию о различных стандартных идентификаторах систем для классификации сообщений от определенных демонов, таких, как mail, lpr, news и kern(el). Идентификаторы систем local0 и local7 могут использоваться для классификации сообщений от системных утилит (или любых подключенных к сети устройств, которые поддерживают механизм сообщений демона syslogd). Ниже приведен список всех идентификаторов систем из файла конфигурации rsyslog.conf версии 1.3. Ключевое слово security является устаревшим.

17.2.5. Описания приоритетов (priorities)

Наиболее важное сообщение может иметь описание приоритета emerg , вслед за которыми идут описания приоритетов alert и crit . Сообщения с наиболее низкими приоритетами имеют описания приоритетов info и debug . При указании минимального приоритета для журналирования сообщений будет осуществляться журналирование сообщений и с более высоким приоритетом. Вы можете использовать префикс = перед описанием приоритета для получения только тех сообщений, которые соответствуют этому описанию. Также вы можете использовать описание приоритета .none для предотвращения выполнения определенного действия при приеме любого сообщения с определенным идентификатором системы.

Ниже приведен список приоритетов в порядке возрастания. Ключевые слова warn, error и panic являются устаревшими.

17.2.6. Действия (actions)

Стандартным действием является отправка сообщения пользователю, имя которого записано в качестве действия. Если в качестве действия приводится строка с префиксом / , демон rsyslogd будет отправлять сообщение в файл (который может быть как обычным файлом, так и файлом устройства принтера или терминала). Префикс @ позволяет осуществлять отправку сообщения другому серверу с исполняющимся на нем демоном syslogd. Ниже приведен список всех возможных действий.

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

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

Ниже приведен пример фрагмента файла конфигурации /etc/rsyslog.conf для обработки нестандартных сообщений с идентификатором системы local4.

Читайте также:  Hp dl160 g6 установка windows

17.2.8. Перезапуск демона rsyslogd

Не забудьте перезапустить демон после модификации его файла конфигурации.

17.3. Утилита logger

Утилита logger может использоваться для генерации тестовых сообщений для демона syslogd. Также вы можете использовать ее в сценариях командной оболочки. Ниже приведен пример команд, используемых для тестирования демона syslogd с помощью утилиты logger .

Результаты тестирования демона журналирования событий с помощью утилиты logger.

17.4. Просмотр журналов событий

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

Также вы можете автоматически повторять вызовы утилит, размещая перед ними вызов утилиты watch . Примером может служить следующая команда:

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

17.5. Ротация журналов событий

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

Ниже приведено содержимое стандартного файла конфигурации logrotate.conf из состава дистрибутива Red Hat.

17.6. Практическое задание: журналирование событий

1. Выведите содержимое файла журнала /var/run/utmp с помощью специально предназначенной для этой цели утилиты (без использования утилиты cat или текстового редактора vi).

2. Выведите аналогичным образом содержимое файла журнала /var/log/wtmp.

3. Используйте утилиты lastlog и lastb и сделайте вывод о различии этих утилит.

4. Исследуйте файл конфигурации демона журналирования событий syslogd с целью выяснения пути к к файлу журнала событий, который содержит информацию о неудачных попытках удаленного входа в систему с помощью клиента ssh.

5. Настройте демон журналирования событий syslogd таким образом, чтобы сообщения с идентификатором системы и приоритетом local4.error и сообщения с более высокими приоритетами и этим же идентификатором системы размещались в файле журнала /var/log/l4e.log, а сообщения с идентификатором системы и исключительным приоритетом local4.info — в файле журнала /var/log/l4i.log. Проверьте корректность настройки с помощью утилиты logger!

6. Настройте демон журналирования событий syslogd таким образом, чтобы в файле журнала /var/log/Mysu.log размещались все сообщения, сгенерированные утилитой su в ходе получения привилегий пользователя root. Проверьте корректность настройки!

7. Настройте отправку сообщений с идентификатором системы local5 на сервер вашего соседа, на котором исполняется демон syslogd. Проверьте корректность настройки.

8. Разработайте сценарий, который будет вызывать утилиту logger для отправки сообщений с идентификатором системы local4 демону журналирования событий через каждые 15 секунд (текст сообщений должен отличаться). Используйте команду tail -f для отслеживания изменений ваших локальных файлов журналов событий.

17.7. Корректная процедура выполнения практического задания: журналирование событий

1. Выведите содержимое файла журнала /var/run/utmp с помощью специально предназначенной для этой цели утилиты (без использования утилиты cat или текстового редактора vi).

2. Выведите аналогичным образом содержимое файла журнала /var/log/wtmp.

3. Используйте утилиты lastlog и lastb и сделайте вывод о различии этих утилит.

lastlog : выводит информацию о последних входах пользователей в систему

lastb : выводит информацию о неудачных попытках входа в систему

4. Исследуйте файл конфигурации демона журналирования событий syslogd с целью выяснения пути к к файлу журнала событий, который содержит информацию о неудачных попытках удаленного входа в систему с помощью клиента ssh.

Дистрибутивы Ubuntu 9.10 и Debian Lenny переведены на использование демона журналирования событий rsyslog.

5. Настройте демон журналирования событий syslogd таким образом, чтобы сообщения с идентификатором системы и приоритетом local4.error и сообщения с более высокими приоритетами и этим же идентификатором системы размещались в файле журнала /var/log/l4e.log, а сообщения с идентификатором системы и исключительным приоритетом local4.info — в файле журнала /var/log/l4i.log. Проверьте корректность настройки с помощью утилиты logger!

6. Настройте демон журналирования событий syslogd таким образом, чтобы в файле журнала /var/log/Mysu.log размещались все сообщения, сгенерированные утилитой su в ходе получения привилегий пользователя root. Проверьте корректность настройки!

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

7. Настройте отправку сообщений с идентификатором системы local5 на сервер вашего соседа, на котором исполняется демон syslogd. Проверьте корректность настройки.

В дистрибутиве RHEL5 следует отредактировать файл /etc/sysconfig/syslog для активации режима приема сообщений от удаленных узлов.

В дистрибутиве RHEL7 следует раскомментировать две следующие строки файла /etc/rsyslog.conf для ‘приема сообщений syslog с использованием протокола UDP’.

В Debian/Ubuntu следует отредактировать файл /etc/default/syslog или /etc/default/rsyslog .

На клиентском компьютере:

8. Разработайте сценарий, который будет вызывать утилиту logger для отправки сообщений с идентификатором системы local4 демону журналирования событий через каждые 15 секунд (текст сообщений должен отличаться). Используйте команду tail -f для отслеживания изменений ваших локальных файлов журналов событий.

Источник

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