Журналы error_log и access_log. Работа с журналами по FTP и SSH
Прежде чем приступить к прочтению статьи, вам будет полезно ознакомиться, что же такое SSH? Это вы можете сделать в нашей предыдущей статье, перейдя по ссылке: https://hoster.ru/faq/1074714-chto-takoe-ssh
Итак, давайте приступим. Сайты часто работают медленно или не работают вовсе, что сильно нас нервирует, а нервные клетки, как известно не восстанавливаются. В первую очередь, что необходимо сделать, так это выяснить, с чем это связано. Для этого предназначены логи, а также журналы error_log и access_log. Вот о них и пойдет дальше речь.
Error_log — лог ошибок. В зависимости от настроек в него могут попадать фатальные ошибки, «алерты», критические ошибки, обычные ошибки, предупреждения, уведомления, информация, подробные уведомления отладки.
Acces_log — тоже лог, но в него попадает информация о подключениях и запросах к сайту. Анализируя этот лог можно понять, к какому файлу чаще всего обращаются, какие запросы в какой файл отправляются и сколько было подключений с того или иного IP. Чаще всего в acces_log нас интересуют: IP клиента, подключающегося к вашему сайту, название файла, к которому идет обращение этого клиента, протокол, метод запроса (get/post), удаленный хост и http-заголовок.
В панели управления cp. hoster.ru логи можно увидеть в разделе «Управление» - «Хостинг» - «Управление файлами», в директории logs.
Для удобства работы лог можно скачать на локальный компьютер.
Рассмотрим лог access_log
141.8.184.2 - - [08/Feb/2017:20:08:56 +0300] "GET /robots.txt HTTP/1.1" 404 298 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
Данная выдержка из лога говорит нам о том, что восьмого февраля 2017 года в 20:08 к нам подключался YandexBot с IP 141.8.184.2. С помощью метода GET он попытался получить файл robots.txt, однако получил ответ 404 (файл не найден).
Crawl-Delay
Если ваш сайт внезапно стал медленно загружаться, а нагрузка на сервере возросла, проверьте через access_log частоту индексирования сайта поисковыми системами. Если в единицу времени вас индексируют все и сразу, то это может создать нагрузку и замедлить работу вашего сайта. Рекомендуем в данном случае настроить Crawl-Delay.
Однострочные команды при работе через SSH
Узнать, какие файлы чаще всего запрашиваются:
cat путь-до-access-лога | awk {'print $7'} | cut -d\? -f1| grep php | sort | uniq -c| sort -n
Список IP, подключавшихся к вашему сайту, и их количество:
cat путь-до-access-лога | awk '{ print $1 }' | sort | uniq -c | sort
В данном случае берется последний лог. Если настроена ротация, а нужно получить список за определенный день, можно сделать так:
cat logs/access_log_name* | grep '24/May/2017' | awk '{ print $1 }' | sort | uniq -c | sort
Если ратинированные логи сжаты, можно заменить cat на zcat.
Если хотим узнать, кому принадлежат IP (если мы ведем поиск вредоносного IP), а проверять каждый через сервис whois не хочется, можно сделать так:
cat logs/access_log | grep '24/May/2017' | awk '{ print $1 }' | sort | uniq -c | sort > black_ip
for i in $(cat black_ip | awk '{ print $2 }'); do echo $i' >> '; whois $i | grep -E 'NetName|OrgName|OrgTechName|descr' ;done > black_ip2
Выполнив команду cat black_ip2 мы увидим IP и его владельца.
Рассмотрим лог error_log
[Mon Feb 27 01:11:35 201] [error] [client 178.154.189.36] File does not exist: /home/srv113923/srv113923.hoster-test.ru/robots.txt
[Mon Feb 27 01:11:39 201] [error] [client 141.8.184.2] Directory index forbidden by Options directive: /home/srv113923/srv113923.hoster-test.ru/
Рассмотрим обе строки лога:
[Mon Feb 27 01:11:35 201] [error] [client 178.154.189.36] File does not exist: /home/srv113923/srv113923.hoster-test.ru/robots.txt
В данном случае лог сообщает нам о том, что клиент с IP 178.154.189.36 27 февраля пытался подключиться к сайту srv113923.hoster-test.ru и запросить файл robots.txt, однако не обнаружил его на сервере (File does not exist). Файл либо отсутствует на сервере, либо у него установлены некорректные права.
Если вы попытались продиагностировать лог ошибок, но у вас не получилось найти источник проблемы, свяжитесь с нашей технической поддержкой support@hoster.ru и мы вам обязательно поможем.