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

Подробнее о том, как найти логи в Linux и как их обрабатывать — рассказываем в статье.

Содержание

  1. Виды логов
  2. Где находятся логи
  3. Как читать логи сервера

Виды логов

Разные программы на сервере как правило генерируют собственные лог-файлы. Вот наиболее основные из них:

  • главный системный лог — общая информация о системе, начиная с момента её запуска (данные о действиях с ядром Linux, обнаруженных устройствах, сетевых интерфейсах, работе различных служб вроде FTP-сервера или DNS-сервера, и ещё много о чём другом).
  • лог загрузки системы — сообщения от ядра. Сюда записываются данные об устройствах, которые загружаются вместе с системой. С помощью этого лога можно выполнить отладку системы, если она не загружается.
  • журнал авторизации пользователей — информация об авторизации пользователей. Здесь вы найдёте записи об успешных и неуспешных попытках входа в систему, логины пользователей, используемые механизмы аутентификации.
  • логи веб-сервера — журнал запросов к веб-серверу, информация об ошибках. Эта информация поможет найти битые ссылки и причины ошибок на сайте, а также покажет, кто слишком сильно нагружает сервер или пытается его взломать.
  • лог почтового сервера — записи обо всех отправленных и доставленных сообщениях, ошибки почтового сервера, причины отклонения писем.
  • логи базы данных — запросы к базам данных, ошибки сервера.
  • логи планировщика Cron — протокол выполненных задач, сообщения от самих команд, ошибки при запуске крона.

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

Как найти логи

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

На VPS или выделенном сервере

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

Чтобы вывести полный список лог файлов в папке /var/log/ на вашем сервере, используйте команду ls:

ls -l /var/log/

Вот как называются основные логи, которые вы найдёте в этой папке:

  • /var/log/syslog или /var/log/messages — главный системный лог Linux.
  • /var/log/auth.log или /var/log/secure — журнал авторизации пользователей.
  • /var/log/maillog/ или /var/log/mail.log — логи почтового сервера.
  • /var/log/httpd/ или /var/log/apache2/ — логи веб-сервера Apache. Журнал доступа находится в файле access.log, а логи ошибок в файле error.log.
  • /var/log/nginx/ — логи веб-сервера Nginx.
  • /var/log/dmesg — лог загрузки системы.
  • /var/log/mysql/ — логи базы данных MySQL.
  • /var/log/cron — логи планировщика Cron.

Чтобы посмотреть логи в Linux, скорее всего, вам понадобится root доступ к серверу. Дальше можно использовать такие стандартные команды:

  • tail — вывести последние 10 строк;
  • head — вывести первые 10 строк;
  • cat — вывести весь лог-файл;
  • grep — вывести в лог-файле все вхождения указанного слова или регулярного выражения.

Также есть вариант — установить утилиту lnav. Её удобство в том, что она поддерживает подсветку синтаксиса. Возможно, с её помощью работать с логами будет удобнее.

На виртуальном хостинге

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

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

На главной странице cPanel найдите раздел «Метрики». В нём есть несколько приложений, где хранятся логи: «Посетители» и «Необработанный журнал доступа».

Logs, logfiles, file log, server logs, логи, лог-файлы — что это такое

В приложении «Ошибки» вы найдёте логи ошибок веб-сервера за последние два дня. Информация здесь подаётся в необработанном виде и сразу по всем доменам из вашего аккаунта. Всего здесь может быть до 300 записей.

Просмотр логов ошибок веб-сервера в cPanel

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

Просмотреть логи после скачивания можно при помощи любого текстового редактора.

Как читать логи сервера

Также в корневой папке вашего сайта в файле error_log будут логи с ошибками PHP. По умолчанию для основного домена эта папка называется public_html, а для дополнительного — также как и сам домен.

Как работать с логами

Как обрабатывать логи

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

Access.log

66.249.66.45 - - [25/Apr/2023:18:33:00 +0300] "GET /robots.txt HTTP/1.1" 404 24406 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

66.249.66.45 — IP-адрес посетителя.

“- -“ — два идентификатора посетителя. Первый идентификатор это identd. Второй это юзернейм посетителя, если он использовал HTTP-аутентификацию. В нашем примере оба идентификатора неизвестны, поэтому в логах стоят два прочерка.

[25/Apr/2023:18:33:00 +0300] — дата и время запроса.

“GET /robots.txt HTTP/1.1” — тип запроса, путь к запрашиваемому файлу и версия протокола HTTP.

404 — код состояния HTTP, которым сервер ответил на запрос. 

24406 — размер файла в байтах без учёта заголовков ответа.

“-“  — страница, с которой совершили запрос. Прочерк в нашем примере означает, что посетитель обратился к URL напрямую. 

“Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” — данные о посетителе, который совершил запрос. 

Error.log

2023-04-26 09:34:07.513128 [INFO] [25473] [T0] [65.108.46.177:48252#APVH_vashdomen.com] File not found [/home/username/public_html/wp-content/themes]

2023-04-26 09:34:07.513128 — дата и время, когда была сделана запись в логах.

[65.108.46.177:48252#APVH_vashdomen.com] — IP-адрес клиента, который совершил запрос, а также имя виртуального хоста, к которому он обращался.

File not found [/home/username/public_html/wp-content/themes] — текст ошибки и путь к файлу или папке, который её вызвал.

PHP error_log

[20-Apr-2023 17:16:29 UTC] PHP Fatal error:  require(): Failed opening required '/home/username/public_html/wp-includes/class-wp-session-tokens.php' in /home/username/public_html/wp-settings.php on line 189

[20-Apr-2023 17:16:29 UTC] — дата и время возникновения ошибки.

PHP Fatal error:  require(): Failed opening required ‘/home/username/public_html/wp-includes/class-wp-session-tokens.php’ — текст ошибки. Конкретно в этом примере ошибка в том, что PHP-обработчик не смог открыть файл class-wp-session-tokens.php, потому что файл либо отсутствует по указанному пути, либо к нему нет доступа.

in /home/username/public_html/wp-settings.php on line 189 — путь к файлу, в котором возникла проблема, с указанием проблемной строки.

Что дальше

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

Если же проблема в том, что кто-то пытается взломать сайт или слишком сильно нагружает сервер тяжёлыми запросами, вам может понадобиться заблокировать этого пользователя. Это можно сделать в файле .htaccess.

Как заблокировать доступ к сайту в .htaccess

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

Была ли статья полезной?

Спасибо за отзыв!