Перейти к содержимому

Где находятся логи сервисов linux

  • автор:

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

img

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

Большинство файлов логов Linux хранятся в простом текстовом файле ASCII и находятся в каталоге и подкаталоге /var/log . Логи создаются системным демоном логов Linux, syslogd или rsyslogd .

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

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

Как просматривать логи Linux

1. Сначала откройте терминал Linux как пользователь root. Это позволит получить root-права.

2. Используйте следующую команду для просмотра папки где находятся файлов логов:

cd /var/log

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

Команда отображает все файлы логов Linux, такие как kern.log и boot.log . Эти файлы содержат необходимую информацию для правильного функционирования операционной системы.

ls

Доступ к файлам логов осуществляется с использованием привилегий root. По определению, root — это учетная запись по умолчанию, которая имеет доступ ко всем файлам Linux.

Используйте следующий пример строковой команды для доступа к соответствующему файлу:

sudo less [log name here].log

Эта команда отображает временную шкалу всей информации, относящейся к этой операции.

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

  • zcat — Отображает все содержимое logfile.gz
  • zmore — Просмотр файла по страницам, не распаковывая файлы
  • zgrep — Поиск внутри сжатого файла
  • grep — Найти все вхождения поискового запроса в файле или отфильтровать файл логов
  • tail — Выводит последние несколько строк файлов
  • head — Просмотр самого начала текстовых файлов
  • vim — Просмотр при помощи текстового редактора vim
  • nano — Просмотр при помощи текстового редактора nano

Важные системные логи Linux

Логи могут многое рассказать о работе системы. Хорошее понимание каждого типа файла поможет различать соответствующие логи.

Большинство каталогов можно сгруппировать в одну из четырех категорий:

  • Системные логи (System Logs)
  • Логи событий (Event Logs)
  • Логи приложений (Application Logs)
  • Логи обслуживания (Service Logs)

Многие из этих логов могут быть расположены в подкаталоге var/log .

Системные логи

Файлы логов необходимы для работы Linux. Они содержат значительный объем информации о функциональности системы. Наиболее распространенные файлы логов:

  • /var/log/syslog : глобальный системный журнал (может быть в /var/log/messages )
  • /var/log/boot.log : лог загрузки системы, где хранится вся информация, относящаяся к операциям загрузки
  • /var/log/auth.log : логи аутентификации, который хранит все логи аутентификации, включая успешные и неудачные попытки (может быть в /var/log/secure )
  • /var/log/httpd/ : логи доступа и ошибок Apache
  • /var/log/mysqld.log : файл логов сервера базы данных MySQL
  • /var/log/debug : логи отладки, который хранит подробные сообщения, связанные с отладкой, и полезен для устранения неполадок определенных системных операций
  • /var/log/daemon.log : логи демона, который содержит информацию о событиях, связанных с запуском операции Linux
  • /var/log/maillog : логи почтового сервера, где хранится информация, относящаяся к почтовым серверам и архивированию писем
  • /var/log/kern.log : логи ядра, где хранится информация из ядра Linux
  • /var/log/yum.log : логи команд Yum
  • /var/log/dmesg : логи драйверов
  • /var/log/boot.log : логи загрузки
  • /var/log/cron : логи службы crond

Демон системных логов

Логирование осуществляется при помощи демона syslogd

Программы отправляют свои записи журнала в syslogd, который обращается к конфигурационному файлу /etc/syslogd.conf или /etc/syslog и при обнаружении совпадения записывает сообщение журнала в нужный файл журнала. Каждый файл состоит из селектора и поля ввода действия. Демон syslogd также может пересылать сообщения журнала. Это может быть полезно для отладки. Этот файл выглядит приерно так:

Dec 19 15:12:42 backup.main.merionet.ru sbatchd[495]: sbatchd/main: ls_info() failed: LIM is down; try later; trying . Dec 19 15:14:28 system.main.merionet.ru pop-proxy[27283]: Connection from 186.115.198.84 Dec 19 15:14:30 control.main.merionet.ru pingem[271] : office.main.merionet.ru has not answered 42 times Dec 19 15:15:05 service.main.merionet.ru vmunix: Multiple softerrors: Seen 100Corrected Softerrors from SIMM J0201 Dec 19 15:15:16 backup.main.merionet.ru PAM_unix[17405]: (sshd) session closed 'for user trent

Логи приложений

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

Файлы логов, которые попадают в эту категорию, включают логи системы печати CUPS, лог Rootkit Hunter, логи HTTP-сервера Apache, логи SMB-сервера Samba и лог сервера X11.

Логи не в удобочитаемом формате

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

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

Графические интерфейсы для просмотра файлов логов Linux

System Log Viewer — это графический интерфейс, который можно использовать для отслеживания системных логов.

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

В качестве альтернативы можно использовать Xlogmaster, который может отслеживать значительное количество файлов логов.

Xlogmaster полезен для повышения безопасности. Он переводит все данные для выделения и скрытия строк и отображает эту информацию для выполнения действий, запрошенных пользователем.

Как настроить файлы логов в Ubuntu и CentOS

Начнем с примера CentOS. Чтобы просмотреть пользователей, которые в настоящее время вошли на сервер Linux, введите команду who от имени пользователя root:

who

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

last reboot

last reboot

Чтобы просмотреть информацию о последнем входе в систему, введите:

lastlog

lastlog

Выполнить ротацию лога

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

Целью ротации логов является сжатие устаревших логов, занимающих место. Ротацию лога можно выполнить с помощью команды logrotate . Эта команда вращает, сжимает и отправляет системные логи по почте.

logrotate обрабатывает системы, которые создают значительные объемы файлов логов. Эта команда используется планировщиком cron и считывает файл конфигурации logrotate /etc/logrotate.conf . Он также используется для чтения файлов в каталоге конфигурации logrotate.

Чтобы включить дополнительные функции для logrotate, начните с ввода следующей команды:

var/log/log name here].log

Он сжимает и изменяет размер желаемого файла логов.

Команды выполняют следующие действия:

  • missingok — сообщает logrotate не выводить ошибку, если файл логов отсутствует.
  • notifempty — не выполняет ротацию файла логов, если он пуст. Уменьшает размер файла лога с помощью gzip
  • size — гарантирует, что файл логов не превышает указанный размер, и поворачивает его в противном случае
  • daily — меняет файлы журналов по ежедневному расписанию. Это также можно делать по недельному или ежемесячному расписанию.
  • create — создает файл логов, в котором владелец и группа являются пользователем root

Итоги

Тщательное понимание того, как просматривать и читать логи Linux, необходимо для устранения неполадок в системе Linux. Использование правильных команд и инструментов может упростить этот процесс.

Работа с логами (журналами) сервера

url image

Как правило, в Linux логи хранятся в специальном каталоге /var/log , внутри которого создаются отдельные файлы и папки для того или иного сервиса. Однако стоит учитывать, что для служб и ПО не запрещено задавать специальные каталоги для хранения логов. Например, для виртуальных хостов (сайтов) панель ISPmanager задает специальный каталог ( /var/www/htttpd-logs ) для удобного анализа логов по каждому сайту отдельно. А, например, стороннее ПО, устанавливаемое в директорию /opt , чаще всего будет вести логи также внутри этого каталога.

Стоит отметить, что несмотря на общую структуру, наименования отдельных файлов и каталогов могут отличаться в зависимости от определенной версии ОС, чаще всего разделяют на Debian-based (Debian/Ubuntu) и RedHat-based (Centos, Rocky Linux, AlmaLinux и т.д.), в статье мы будем разделять именно так.

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

Системные логи

Начнем с системных логов как наиболее важных (система — основа работы сервера:)).

  • Системный журнал, как правило, записывается в файлы:
    Debian-based:
    /var/log/syslog RedHat-based:
    /var/log/messages
    Там находится много различной информации о событиях, процессах и ошибках практически от всех системных служб сервера и, в частности, сообщения от ядра Linux. Также к системному логу можно отнести:
    /var/log/dmesg (для удобного просмотра этого журнала можно просто выполнить команду dmesg -T )
    /var/log/kern.log
    в этих файлах ведется журнал с сообщениями ядра и драйверов всех устройств сервера. Обратите внимание, что эти логи ведутся с момента старта системы, поэтому часто после ее аварийной перезагрузки довольно сложно узнать, что было, так как этого события уже нет в логе.
  • Логи авторизации.
    Сюда вносится информация о входах в систему, в том числе и о неудачных попытках (полезно для отслеживания попыток подбора пароля к системе и выяснения, кто был на сервере)
    Debian-based:
    /var/log/auth.log RedHat-based:
    /var/log/secure
  • Лог загрузки ОС:
    /var/log/boot.log
  • Лог планировщика (CRON) системы:
    /var/log/cron

Логи веб-сервера

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

У Apache и Nginx есть свои логи, как правило, двух категорий: первая — хранит журнал посещений, вторая — хранит информацию об ошибках, уведомлениях, примечаниях, предупреждениях и т. д.

Также в связке с Nginx довольно часто устанавливается интерпретатор PHP (php-fpm), соответственно, он тоже имеет свой лог с ошибками и уведомлениями.

Логи веб-сервера Apache

Apache создает два лог-файла:

  • лог посещений (доступа) ( access.log/access_log );
  • лог ошибок ( error.log/error_log ).

Конфигурация Apache позволяет задать хранение этих файлов отдельно для каждого сайта, размещенного на сервере. Хороший пример — реализация журналов веб-сервера в панели ISPmanager — логи хранятся в директории /var/www/httpd-logs и называются domain.name.access.log и domain.name.error.log , где вместо domain.name — имя определенного домена. Могут быть и другие реализации хранения логов, это всегда отражено в конфигурационных файлах веб-сервера.

Что касается стандартной реализации, то логи на Debian-based системах хранятся в каталоге /var/log/apache2 , а у RedHat-based систем в каталоге /var/log/httpd .

Логи веб-сервера Nginx

Nginx создает тоже два файла, хранящих журнал посещений и журнал ошибок. Файлы находятся в каталоге /var/log/nginx . В случае конфигурации веб-сервера как связки Nginx с Apache, журналы Nginx иногда пишутся в одном файле с логами Apache, с одной стороны, это может быть удобно, но в некоторых случаях для обнаружения ошибок это может создать трудности.

Также как и в Apache, Nginx может быть настроен для ведения логов каждого сайта отдельно.

Пример отображения стандартных логов Nginx в консоли:

Файлы .gz — это архивы логов, созданные в результате ротации логов, о ней расскажем позже.

Логи PHP-интерпретатора

Стандартно PHP-интерпретатор входит в конфигурацию Apache как модуль PHP. В таком случае все ошибки PHP хранятся там же, где основной лог Apache.
Если интерпретатор PHP работает в виде службы PHP-FPM (например, для связки веб-сервера Nginx+PHP-fpm), то логи хранятся отдельно, в каталоге /var/log/php-fpm .

В PHP (через конфигурационный файл php.ini) возможно настроить запись ошибок в определенный лог-файл, либо задать запись ошибок на определенной странице в отдельный файл (это уже осуществляется через файл .htaccess в соответствующем каталоге сайта). Чаще всего для таких случаев задают имя файла php_error.log или просто error.log , располагаться они могут как в каталоге сайта, так и любом другом каталоге пользователя, проверить лучше непосредственно в конфигурации PHP и веб-сервера.

Логи почтовой службы

На серверах довольно часто, помимо веб-сервера, присутствует и почтовая служба для отправки и приема писем все с тех же сайтов или отдельно через электронные почтовые ящики. Наиболее популярной конфигурацией почты сейчас является связка Exim (отправка и прием писем по протоколу SMTP) и Dovecot с сортировщиком sieve (для доступа пользователей к почтовым ящикам по протоколу IMAP/POP3).

В этом случае логи Exim находятся в каталоге /var/log/exim , чаще всего интересует файл mainlog (в нем хранятся все события почтовой службы), еще есть panic.log (там находятся сообщения об ошибках).

У Dovecot же логи, как правило, пишутся в файл /var/log/maillog или /var/log/mail.log , в него заносится информация о доставке, приеме и сортировке писем.

Логи FTP

В качестве FTP-службы в Linux есть несколько вариантов ПО, но в целом методика ведения логов у каждого ПО примерно схожая. В папке /var/log создаются журналы FTP-сервера, в случае использования vsFTPd это будет файл vsftpd.log , а в случае proFTPd — proftpd.log . В случае PURE-FTPd поищите файл /var/log/pureftpd.log . Если лога FTP вы не обнаружите, скорее всего, он все равно ведется, но уже в системных логах, упомянутых выше, это:

Также некоторые FTP-службы имеют файл лога xferlog , в котором пишется информация обо всех передачах по протоколу FTP.

Логи сервера базы данных

Рассмотрим сначала наиболее распространенный сервер баз данных MySQL. В стандартной настройке он ведет лог в файле mysqld.log или mysql.log . Файл располагается в папке /var/log/mysql или /var/log/mariadb , в зависимости от используемой версии MySQL.

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

Также сервер MySQL может создавать в этой папке файл отладки медленных запросов к базе данных. Обычно он называется mysql_slow.log .
Иногда, в случае если настроена репликация баз данных, включают и ведение бинарных логов, они заносятся в файл mysql-bin.log . Этот лог, помимо большого своего объема на диске, также может снизить производительность сервера баз данных, поэтому также без особой необходимости включать его ведение не стоит.

Относительно сервера баз данных PostgreSQL можно отметить, что ведение логов задается в разных случаях в совершенно разные директории. Стоит посмотреть значение переменной log_filename в конфигурационном файле PostgreSQL, если этот параметр не задан, но при этом параметр logging_collector в статусе on, то лог ведется по следующему пути:

/var/log/postgresql/postgresql-x.x.main.log
где x.x — номер версии PostgreSQL

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

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

На примере логов веб-сервера работает он так. Раз в сутки (время можно задавать) файл лога, например, access.log переименовывается logrotate’ом в access.log.1 и проходит через gzip-сжатие, после чего получает имя access.log.1.gz. А вместо переименованного access.log тут же создается новый пустой файл с этим именем, куда и продолжает писаться информация о посещениях. На следующие сутки, уже при наличии файла access.log.1.gz, аналогично создается файл уже с именем access.log.2.gz, таким же образом далее все дни. Количество хранимых архивов и период можно настроить.

По такому же принципу ротируются логи и других служб — FTP, почтовой службы, системные логи.

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

Чтение лог-файлов

Логи бывают разные, как и способы их чтения.

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

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

Она может быть полезна, только если вы ищите сразу в логе что-то определенное, например, ошибку:

cat имя.лога | grep err

Но даже в этом случае ошибку можно поискать сразу командой grep :

grep ‘err’ имя.лога

Без поиска же более логичен в данном случае просмотр лога через инструмент tail :

  • tail имя.лога — выведет последние 10 строк журнала,
  • tail -n 100 имя.лога — выведет последние 100 строк журнала, числовое значение можно менять в зависимости от необходимого числа строк,
  • tail -f имя.лога — просмотр лога в «прямом эфире», т. е. все поступаемые в лог записи тут же обновляются на экране, удобно для отслеживания ошибок, появляющихся после определенных действий.

Ну, а если все же требуется прочитать весь объемный лог или как минимум пробежаться глазами для отслеживания событий, для этого есть более удобный, чем cat, инструмент less :

less имя.лога — покажет первую страницу лога (те строки, которые поместятся на экран консоли), пролистывать можно клавишами «вверх»/«вниз» (построчно) и PageUp/PageDown (постранично).

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

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

После ввода необходимой части текста, нажмите Enter , все участки текста, которые подходят условиям поиска, будут подсвечены.

Для быстрого перехода в конец файла, нажмите клавишу G , для перехода в начало файла — g .

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

Просмотр и анализ логов сайта на Linux сервере

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

Важные логи сайта

  • Access.log — логи посещений пользователей и ботов. Позволяет составить более точную и подробную статистику, нежели сторонние ресурсы, выполняющие внешнее сканирование сайта и отправляющие ряд ненужных запросов серверу. Благодаря данному логу можно получить информацию об используемом браузере и IP-адрес посетителя, данные о местонахождении клиента (страна и город) и многое другое. Стоит обратить внимание, если сайт имеет высокую посещаемость, то анализ логов сервера потребует больше времени. Поэтому для составления статистики стоит использовать специализированные программы (анализаторы).
  • Error.log — программные ошибки сервера. Стоит внимательно отнестись к анализу данного лога, ведь боты поисковиков, сканируя, получают все данные о работе сайта. При обнаружении большого количества ошибок, сайт может попасть под санкции поисковых систем. В свою очередь из записей данного журнала можно узнать точную дату и время ошибки, IP-адрес получателя, тип и описание ошибки.
  • Slow.log (название зависит от используемой оболочки сервера) — в данный журнал записываются медленные запросы сервера. Так принято обозначать запросы с повышенным порогом задержки, выданные пользователю. Этот журнал позволяет выявить слабые места сервера и исправить проблему. Ниже будет рассмотрен способ включить ведение данного лога на разных типах серверов, а также настройка задержки, с которой записи будут заноситься в файл.

Расположение логов

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

Стандартные пути до Error.log

Nginx
/var/log/nginx/error.log
Php-Fpm
/var/log/php-fpm/error.log
Apache (CentOS)
/var/log/httpd/error_log
Apache (Ubuntu, Debian)
/var/log/apache2/error_log

Стандартные пути до Access.log

Nginx
/var/log/nginx/access.log
Php-Fpm
/var/log/php-fpm/access.log
Apache (CentOS)
/var/log/httpd/access_log
Apache (Ubuntu, Debian)
/var/log/apache2/access_log

Чтение записей в логах

Записи в логах имеют структуру: одно событие – одна строка .

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

Примеры записей

Error.log
[Sat Sep 1 15:33:40.719615 2019] [:error] [pid 10706] [client 66.249.66.61:60699] PHP Notice: Undefined variable: moduleclass_sfx in /var/data/www/site.ru/modules/contacts/default.php on line 14

В приведенном примере:

  • [Sat Sep 1 15:33:40.719615 2019] — дата и время события.
  • [:error] [pid 10706] — ошибка и её тип.
  • [client 66.249.66.61:60699] — IP-адрес подключившегося клиента.
  • PHP Notice: Undefined variable: moduleclass_sfx in — событие PHP Notice. В данной ситуации — обнаружена неизвестная переменная.
  • /var/data/www/site.ru/modules/contacts/default.php on line 14 — путь и номер строки в проблемном файле.

Access.log

194.61.0.6 – alex [10/Oct/2019:15:32:22 -0700] "GET /apache_pb.gif HTTP/1.0" 200 5396 "http://www.mysite/myserver.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

В приведенном примере:

  • 194.61.0.6 — IP-адрес пользователя.
  • alex — если пользователь зарегистрирован в системе, то в логах будет указан идентификатор.
  • [10/Oct/2019:15:32:22 -0700]— дата и время записи.
  • «GET /apache_pb.gif HTTP/1.0» — «GET» означает, что определённый документ со страницы сайта был отправлен пользователю. Существует команда «POST», наоборот отправляет конкретные данные (комментарий или любое другое сообщение) на сервер . Далее указан извлечённый документ «Apache_pb.gif», а также использованный протокол «HTTP/1.0».
  • 200 5396 — код и количество байтов документа, которые были возвращены сервером.
  • «http://www. www.mysite/myserver.html»— страница, с которой был произведён запрос на извлечение документа «Apache_pb.gif».
  • «Mozilla/4.08 [en] (Win98; I ;Nav)» — данные о пользователе, которой произвёл запрос (используемый браузер и операционная система).

Просмотр логов сервера с помощью команды tail

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

Первый вариант использования Tail

tail -f /var/log/syslog

Аргумент «-f» позволяет команде делать просмотр событий в режиме реального времени, в ожидании новых записей в лог файлах. Для прерывания процесса следует нажать сочетание клавиш «Ctrl+C».

На место переменной «/var/log/syslog» в примере следует подставить актуальный адрес до нужных системных журналов.

Второй вариант использования Tail

tail -F /var/log/syslog

В Linux логи веб-сервера не ведутся до бесконечности, поскольку это усложняет их дальнейший анализ. При преодолении лимита записей, система переименует переполненный строками файл журнала и отправит в «архив». Вместо старого файла создастся новый, но с прежним названием.

Если будет использоваться аргумент «-f», команда продолжит отслеживание старого, переименованного журнала. Данный метод делает невозможным просмотр логов в реальном времени, поскольку файл более не актуален.

При использовании аргумента «-F», команда, после окончания записи старого журнала, перейдёт к чтению нового файла с логами. В таком случае просмотр логов в режиме реального времени продолжится.

Аналог команды Tail

tailf /var/log/syslog

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

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

Изменение стандартного количества строк для вывода

Как и отмечалось выше, по умолчанию выводится 10 строк. Если требуется увеличить или уменьшить их количество, в команду добавляется аргумент «-n» и необходимое число строк.

tail -f -n 100 /var/log/syslog

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

Просмотр логов с помощью ISPManager

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

  1. На главной странице, в панели инструментов «WWW» нужно нажать на вкладку «Журналы».
  2. ISPManager выдаст журналы посещений и серверных ошибок в виде:
    • ru.access.log;
    • ru.error.log.*

* Вместо «newdomen.ru» из примера в выдаче будет название актуального домена.

Открыть файл лога можно, нажав на «Посмотреть» в верхнем меню.

  • Для просмотра всех записей журнала, необходимо нажать на «Скачать» и сохранить файл на локальный носитель.
  • Более старые версии логов можно найти во вкладке «Архив».
  • Программы для анализа логов

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

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

    Статические программы

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

    WebLog ExpertWebLog Expert
    Возможности
    • Предоставление информации об активность сайта, количестве посетителей, доступ к файлам, URL страницы, ссылающиеся страницы, информацию о пользователе (браузер и операционная система).
    • Создание отчётов в формате HTML (.html), PDF (.pdf), CSV (.csv).
    • Поддерживает анализ логов Nginx, Apache, ISS.
    • Чтение файлов даже в архивах ZIP (.zip), GZ (.gz).
    Web Log Explorer
    Web Log Explorer
    Возможности
    • Создание многоуровневых отчётов, включающих количество посетителей, маршруты пользователей по сайту, местоположение хостов (страна и город), указанные в поисковике ключевые слова.
    • Поддержка более 43 форматов логов.
    • Возможность прямой загрузки логов с FTP, HTTP сервера.
    • Чтение архивированных журналов.

    Программы для анализа в режиме реального времени

    Эти инструменты встраиваются в программную среду сервера, анализируют данные в реальном времени и записывают непрерывный отчёт.

    GoAccess
    GoAccess
    Возможности
    • Автоматическая генерация отчёта в формате HTML (.html), JSON (.json), CSV (.csv).
    • При подключении к серверу через SSH, возможен анализ в браузере и в терминале
    • Поддержка почти всех форматов (Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront и др.).
    Logstash
    Logstash
    Возможности
    • Постоянная генерация отчёта в файл JSON (.json).
    • Получение и анализ информации из нескольких источников.
    • Возможность пересылать журналы с помощью Filebeat.
    • Поддержка анализа системных журналов.
    • Поддерживается большое количество форматов: от Apache до Log4j (Java).

    Ведения логов медленных запросов сервера

    Анализ данного лога позволяет определить на какие типы запросов сервер отвечает долго. В идеале задержка должна составлять не более 1 секунды.

    На некоторых типах оболочек (MySQL, PHP-FPM) ведение данного лога по умолчанию отключено. Процесс запуска и ведения зависит от сервера.

    MySQL

    Если сервер управляется с помощью MySQL, то необходимо создать каталог и сам файл для ведения журнала с помощью команд:

    mkdir /var/log/mysql
    touch /var/log/mysql/mysql-slow.log

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

    chown mysql:mysql /var/log/mysql/mysql-slow.log

    После выполнения предыдущих действий, нужно совершить вход в командную строку MySQL под учётной записью суперпользователя:

    mysql -uroot -p

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

    > SET GLOBAL slow_query_log = 'ON'; > SET GLOBAL slow_launch_time = 2; > SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log'; > FLUSH LOGS;
    • slow_query_log — запускает ведение журналов медленных запросов.
    • slow_launch_time — указывает максимальную задержку отклика, после которой статистика запроса попадёт в журнал. В данном случае запись в логи происходит при преодолении откликом порога 2 секунды.
    • slow_query_log_file — задаёт путь до используемого журнала.

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

    > SHOW VARIABLES LIKE '%slow%';

    Выход из консоли MySQL выполняется командой:

    > exit

    После выполнения всех предыдущих действий, можно просмотреть логи сервера. Для этого в терминале вводится:

    tail -f /var/log/mysql/mysql-slow.log

    PHP-FPM

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

    vi /etc/php-fpm.d/www.conf

    Далее нужно найти строки:

    • request_slowlog_timeout = 10s — параметр, позволяющий указать задержку, с которой запись о длительном запросе попадёт в журнал.
    • slowlog = /var/log/php-fpm/www-slow.log — параметр, указывающий путь до актуального файла логирования (.log).

    После применения изменений, необходимо перезагрузить сервер PHP-FPM. Для этого в консоль вводится команда:

    systemctl restart php-fpm

    Просмотр логов запускается командой:

    tail -f /var/log/php-fpm/www-slow.log

    Анализ логов медленных запросов

    Логи медленных запросов могут за незначительное время вырасти до огромных размеров. Для сортировки и отображения повторяющихся запросов рекомендуется использовать программу MySQLDumpSlow.

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

    mysqldumpslow местонахождение/файла

    Ведение логов в Logrotate

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

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

    Ubuntu, Debian:

    sudo apt install logrotate

    CentOS:

    sudo yum install logrotate

    После установки необходимо проверить путь для будущих конфигурационных файлов. Для правильной работы они должны находится в папке «logrotate.d». Проверить данный параметр можно открыв конфигурационный файл командой:

    nano /etc/logrotate.conf

    В директории «RPM packages drop log rotation information into this directory» должна присутствовать строка:

    include /etc/logrotate.d

    Теперь создаётся конфигурационный файл «rsyslog.conf». В нём будет находиться конфигурацию по работе с логами. Для создания файла в терминале вводится команда:

    sudo nano /etc/logrotate.d/rsyslog.conf

    В окне терминала откроется текстовой редактор. Теперь нужно внести конфигурацию, как указано в образце. В качестве примера будет использоваться журнал посещений «Access.log» (Nginx).

    /var/log/nginx/access.log

    Теперь остаётся только запустить Logrotate. Для этого вводится команда:

    sudo logrotate -d /etc/logrotate.d/rsyslog.conf

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

    ls /var/cron.daily/

    Надежный хостинг для сайта. 14 дней — бесплатно!

    Где находятся логи сервисов 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”

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

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

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

    Читаем логи Linux

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

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

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

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

    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.

    Команда 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

    journalctl -u pptpd -p err

    Пример вывода всех ошибок 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

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *