Логи (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/the

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 Error 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 Error error: require(): Failed opening required ‘/home/username/public_html/wp-includes/class-wp-session-tokens.php’ — текст помилки. Саме в цьому прикладі помилка в тому, що PHP-обробник не зміг відкрити файл class-wp-session-tokens.php, тому що файл або відсутній вказаним шляхом, або до нього немає доступу.

189 — шлях до файлу, в якому виникла проблема, із зазначенням проблемного рядка.

Що далі

Після того, як ви знайшли потрібні логи сервера і з’ясували, у чому була причина помилки, залишається лише виправити її. У нас є окремі статті для помилок, які найчастіше виникають на хостингу:

Якщо проблема в тому, що хтось намагається зламати сайт або занадто сильно навантажує сервер важкими запитами, вам може знадобитися заблокувати цього користувача. Це можна зробити у файлі .htaccess.

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

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

Чи була ця стаття корисною?

Дякуємо за відгук!