
Логи сервера — главный инструмент SEO-специалиста для диагностики проблем индексации. Когда Google Search Console показывает «Crawled — currently not indexed», только access-логи покажут реальный путь робота: сколько раз он зашёл, какие коды ответа получил, не упёрся ли в rate-limit. Стандартный рабочий цикл: найти файл (/var/log/nginx/access.log), отфильтровать строки по User-Agent бота, проверить коды ответов и сопоставить URL с sitemap.xml. Именно так логи выявляют проблемы, которые Search Console показывает с задержкой 24–48 часов или не показывает вообще.
Об авторе
Артём Бочкарёв — SEO-инженер с 12-летним опытом, работал с проектами на 1M+ страниц в продакшене. По моим наблюдениям, 60% невидимых SEO-проблем находятся именно в access-логах.
Кратко
- Где лежат логи: Nginx —
/var/log/nginx/access.log, Apache —/var/log/apache2/access.log, IIS —C:\inetpub\logs\LogFiles - Что искать: строки с User-Agent
GooglebotилиYandexBot, статус-коды 4xx/5xx, аномальную частоту обращений к одному URL - Инструменты: GoAccess (реалтайм, терминал), Screaming Frog Log File Analyser (GUI)
- Типичные находки: 429 — бот заблокирован rate-limit’ом; 503 — перегрузка в момент обхода; redirect loop между двумя URL
- Минимальный цикл: выгрузить логи → отфильтровать по боту → проверить коды → сопоставить с sitemap.xml
Зачем нужны логи
Анализ серверных логов — единственный способ увидеть объективную реальность взаимодействия поискового робота с сайтом. Пока Google Search Console агрегирует данные с задержкой, access-лог фиксирует каждое обращение бота в реальном времени: какой URL запросил Googlebot, какой HTTP-статус получил и когда именно.
Разница принципиальная. Google Search Console показывает агрегированную статистику: «за последние 90 дней обнаружено X ошибок». Access-лог показывает: «15 мая в 10:05:32 Googlebot запросил /category/pbn-seo/ и получил ответ 503». Это разные уровни диагностики. GSC — симптом, лог — диагноз.
Другой важный момент: системы аналитики вроде Google Analytics вообще не видят поисковых роботов — они фиксируют только пользователей у которых сработал JavaScript. Логи же показывают все обращения включая те, которые завершились ошибкой сервера или были прерваны на полпути.
Классический пример: после обновления движка у интернет-магазина просела индексация новых товаров. В Search Console — общие сообщения об ошибках. Логи показали: Nginx блокировал IP-адреса ботов после 100-го запроса в минуту, принимая их за DDoS. Ошибка 429 в логах — вместо «сервер недоступен» в интерфейсе Google. Без логов SEO-специалист мог бы неделями переписывать контент, тогда как проблема лежала в настройках безопасности.
Ещё одна часто встречающаяся ситуация — «краулинг мусора». Бот тратит 60–70% crawl budget на страницы которых нет в sitemap: устаревшие фильтры категорий, тестовые поддомены, URL с параметрами сортировки. В итоге важные новые статьи индексируются с задержкой в 2–4 недели вместо 2–3 дней. Это видно только в логах.
Третий тип находок — верификация ботов. Многие вебмастера не знают что в логах могут быть строки с User-Agent «Googlebot» от скрейперов-самозванцев. Они не индексируют сайт, но потребляют crawl budget и создают ложное ощущение активности. Проверить подлинность можно только через reverse DNS lookup — и это тоже работа с логами.
Где найти файлы логов
Для SEO-аналитики нужен именно access_log (журнал доступа), а не error_log. В error_log — ошибки PHP и Apache, но не информация о том, какие страницы посетил бот и какой ответ получил.
Linux — Nginx: /var/log/nginx/access.log
Linux — Apache:
- Debian/Ubuntu:
/var/log/apache2/access.log - CentOS/RHEL:
/var/log/httpd/access_log
Windows IIS: C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log
Если путь нестандартный — проверьте конфиг:
grep -i "access_log" /etc/nginx/conf.d/*.conf
grep -i "CustomLog" /etc/apache2/sites-enabled/*.conf
Обратите внимание: на серверах с несколькими сайтами (virtual hosts) у каждого домена может быть отдельный лог. Убедитесь что смотрите на правильный файл — иначе будете анализировать активность бота на другом сайте.
Через панели хостинга:
- cPanel: раздел «Метрики → Raw Access» — скачать текстовые архивы за сутки
- Plesk: «Журналы» — просмотр в реальном времени прямо в браузере
- Рег.ру: папка
logs/в корне аккаунта (на уровень вышеpublic_html)
Важно: большинство хостеров хранят логи только 24–48 часов для экономии места. Сразу после получения доступа к хостингу — увеличьте срок хранения до 30 дней в настройках. Иначе при возникновении проблемы данные за нужный период уже не будет.
Архивы и ротация: старые логи сжимаются автоматически в .gz утилитой logrotate. Для поиска без распаковки — используйте zgrep:
zgrep "Googlebot" /var/log/nginx/access.log.2.gz
Типичная ошибка — попытка открыть .gz в текстовом редакторе. Это зависает систему и портит кодировку. Только zcat, zless, zgrep или скачать + разархивировать через 7-Zip.
- Видите каждый запрос бота в реальном времени
- Находите 429/503 до того как Search Console заметит
- Контролируете crawl budget и «мусорные» запросы
- Верифицируете ботов по IP через reverse DNS
- Диагностика — гадание на кофейной гуще
- Узнаёте о проблеме через 24–48 часов из GSC
- Не видите redirect loop и rate-limit блокировки
- Не контролируете, какие страницы реально обходит бот

Процесс анализа за 5 шагов
access.log за последние 7–30 дней. Отфильтруйте строки по User-Agent: grep "Googlebot" access.log > googlebot.log. Для Яндекса: grep "YandexBot" access.log > yandexbot.log. Проверьте объём: если файл пустой — бот не заходил или логи ведутся иначе.awk '{print $9}' googlebot.log | sort | uniq -c | sort -rn. Норма: 200 — большинство запросов, 301/302 — редиректы (допустимо), 404 — должно быть минимум, 429/503 — критичная проблема требует немедленного исправления.awk '{print $7}' googlebot.log | sort -u > crawled-urls.txt. Сравните с sitemap.xml. Если бот обходит URL которых нет в sitemap — проверьте robots.txt и внутренние ссылки. Если важные страницы из sitemap отсутствуют в логах — бот до них не доходит.awk '{print $4}' googlebot.log | cut -d: -f1-3 | sort | uniq -c. Если запросы идут пачками с большими паузами — вероятно, сервер замедляет бота (429). Норма для Googlebot — несколько запросов в секунду без резких блокировок.host <IP-адрес>. Реальный Googlebot разрешается в *.googlebot.com или *.google.com. Если reverse DNS показывает другой домен — это скрейпер под маскировкой. Фильтруйте в robots.txt или через firewall.Инструменты: GoAccess vs Screaming Frog
GoAccess — консольный анализатор, работает прямо на сервере в реальном времени. Подходит для быстрой диагностики без скачивания файлов.
# Реалтайм-мониторинг Nginx
goaccess /var/log/nginx/access.log --log-format=COMBINED -o report.html
Screaming Frog Log File Analyser — desktop-приложение для Windows/Mac. Удобно для работы с большими архивами, имеет фильтры по ботам, секциям сайта и кодам ответа. Бесплатно до 1000 строк, платная версия — £149/год.
- Нужен реалтайм прямо на сервере
- Нет доступа к Windows-машине
- Лог весит гигабайты и неудобно скачивать
- Достаточно базовой фильтрации по боту
- Нужен GUI с фильтрами и сортировкой
- Работаете с несколькими сайтами параллельно
- Нужна сегментация по разделам сайта
- Важна визуализация воронки обхода

Типичные находки в логах
Несколько паттернов которые встречаются чаще всего при анализе access-логов с точки зрения SEO.
429 Too Many Requests — самая критичная находка. Сервер блокирует бота как DDoS. Особенность: в Search Console это выглядит как «сервер недоступен» без деталей. Решение: добавить IP-диапазоны Googlebot в whitelist в Nginx/Apache, либо поднять rate limit для User-Agent «Googlebot». IP-диапазоны Google публикует на developers.google.com/search/apis/ipranges/googlebot.json.
503 Service Unavailable — сервер перегружен в момент обхода. Часто происходит ночью при пересечении активности Googlebot с бэкап-задачами или cron-скриптами. Проверьте расписание crontab -l и сопоставьте с временными метками 503 в логах.
Redirect loop — страница A редиректит на B, B на A. Бот после нескольких итераций отступает. Видно в логах как повторяющиеся 301/302 на одну и ту же пару URL с коротким интервалом. Исправляется правкой .htaccess или конфига Nginx.
Обход несуществующих URL — бот заходит на страницы вида /product?sort=asc&page=4&color=red из-за неправильной внутренней перелинковки или динамических ссылок генерируемых JavaScript. Закрывайте параметрические URL через robots.txt или тег <link rel="canonical">. Особенно важно для интернет-магазинов с фильтрами — там таких URL могут быть тысячи.
Низкая частота обхода важных разделов — бот заходит на главную страницу 200 раз в день, а на блог или каталог — 2 раза в неделю. Это сигнал к улучшению внутренней перелинковки: добавьте ссылки с главной и популярных страниц на приоритетные разделы.
Большая доля 404 — бот тратит запросы на несуществующие страницы. Частая причина — старые ссылки из внешних источников которые не перенаправлены. Настройте 301 редиректы с популярных 404 на актуальные URL.
Как читать строку лога
Стандартный Combined Log Format выглядит так:
66.249.66.1 - - [15/May/2026:10:05:30 +0300] "GET /category/seo/ HTTP/1.1" 200 12453 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Расшифровка по полям:
66.249.66.1— IP-адрес (для Google из диапазона 66.249.x.x)[15/May/2026:10:05:30 +0300]— точное время с часовым поясомGET /category/seo/ HTTP/1.1— метод, URL, версия протокола200— HTTP-статус ответа (это поле ключевое для SEO-анализа)12453— размер ответа в байтахGooglebot/2.1— User-Agent бота
Первое что делаете — берёте поле статуса (9-й столбец в awk) и считаете распределение. Всё остальное — детали.
Специфика анализа для разных CMS
Поведение поисковых роботов в логах отличается в зависимости от платформы.
WordPress — типичная проблема: Googlebot тратит запросы на , , и страницы архивов без уникального контента. В логах — высокая доля запросов к этим URL при низкой к важным страницам. Решение: закрыть через и добавить на архивные страницы.
OpenCart / Magento — тысячи URL с параметрами сортировки (). В логах — огромный объём запросов к дублям одной страницы. Google тратит crawl budget впустую. Решение: canonical на основную страницу категории или закрытие параметрических URL через robots.txt.
Hugo / статические сайты — лучший сценарий. Все страницы отдаются статическими файлами, нет PHP/Node overhead. В логах должны быть практически только 200. Если видите 404 — это или устаревшие внешние ссылки, или ошибка в sitemap.xml.
Как интерпретировать результаты анализа
После того как вы собрали статистику — нужно правильно расставить приоритеты. Не каждая 404 требует срочного исправления. Не каждый 301 — проблема.
На что реагировать немедленно (в течение 24 часов):
- Любые 429 или 503 для Googlebot — бот активно блокируется
- Доля 4xx превышает 15% от всех запросов бота — что-то сломано глобально
- Redirect loop (те же два URL бесконечно) — полная остановка индексации этого раздела
- Googlebot исчез из логов полностью — возможно, сайт попал в sandbox или robots.txt заблокировал всё
На что реагировать в рамках плановой работы (в течение недели):
- Отдельные 404 на важные страницы — настроить 301 редиректы
- Параметрические URL занимают >20% crawl budget — закрыть через robots.txt
- Важные разделы посещаются редко — улучшить внутреннюю перелинковку
Что можно игнорировать:
- Единичные 404 на ресурсы которых никогда не существовало (старые внешние ссылки)
- Запросы к
/favicon.icoили/robots.txt— это нормально - Небольшая доля 302 редиректов — если они ведут в правильное место
Как правильно читать динамику: Сравнивайте логи за разные периоды. Если месяц назад Googlebot заходил 500 раз в день, а сейчас 50 — это сигнал. Либо сайт упал в приоритете, либо появилась техническая блокировка. Если наоборот — рост с 100 до 300 обращений после публикации новых материалов — хороший знак.
Автоматизация мониторинга логов
Ручная проверка логов раз в неделю — это хорошо, но есть ситуации когда нужен реалтайм-алёрт. Настроить несложно.
GoAccess + cron — запускайте GoAccess раз в час через cron и отправляйте HTML-отчёт на почту или в Telegram. Если в отчёте появляется 429 — вы узнаёте сразу, а не через 24 часа из GSC.
Простой bash-скрипт для мониторинга 429:
#!/bin/bash
COUNT=$(grep "Googlebot" /var/log/nginx/access.log | grep " 429 " | wc -l)
if [ "$COUNT" -gt 5 ]; then
echo "ALERT: $COUNT Googlebot 429 errors in access.log" | mail -s "SEO Alert" [email protected]
fi
Добавьте в crontab: */30 * * * * /path/to/check-bot-errors.sh — проверка каждые 30 минут.
Screaming Frog + Google Sheets — экспортируйте анализ в CSV и загружайте в Google Sheets. Настройте условное форматирование: красный если доля 4xx/5xx выше 5%. Это даёт визуальный дашборд без дополнительных инструментов.
FAQ
Как часто нужно проверять логи? Для активных сайтов (новый контент более 3 раз в неделю) — раз в неделю. Для небольших сайтов — раз в месяц или после каждого крупного обновления структуры. При запуске крупного изменения (новый дизайн, переезд на https, редиректы) — проверьте логи на следующий день.
Что делать если логи не ведутся?
Проверьте конфиг веб-сервера. В Nginx: убедитесь что access_log не отключён директивой access_log off. В Apache: проверьте CustomLog в конфиге виртуального хоста. На shared-хостинге — напишите в поддержку хостинга с просьбой включить ведение логов и увеличить срок хранения.
Могу ли я использовать только Google Search Console вместо логов? GSC даёт агрегированную статистику с задержкой 24–48 часов и без деталей конкретных запросов. Логи — единственный источник raw-данных: точное время, IP, все коды ответов, User-Agent. Для поверхностной диагностики GSC достаточно. Для серьёзного технического SEO — нет.
Как отличить реальный Googlebot от самозванца?
Выполните reverse DNS lookup: host <IP>. Если результат заканчивается на .googlebot.com или .google.com — бот настоящий. Дополнительно можно проверить через официальный инструмент Google. Это бесплатно и занимает минуту.
Что такое crawl budget и как логи помогают его оптимизировать? Crawl budget — количество страниц, которые бот готов обойти за сессию. Для небольших сайтов (до 1000 страниц) это обычно не проблема. Для крупных (10K+ страниц) — критично. Логи показывают на что тратится бюджет: если 40% запросов уходит на параметрические URL или устаревшие страницы — закройте их через robots.txt и освободите бюджет для важного контента.
Нужен ли специалист или можно справиться самому? Базовый анализ (отфильтровать по боту, посмотреть коды ответов) — доступен любому кто умеет работать с терминалом или скачать файл и открыть в GoAccess. Глубокий анализ crawl budget для сайтов 100K+ страниц — лучше привлечь технического SEO-специалиста. Инструменты бесплатные, навык приходит быстро.
Дата последней проверки источников: май 2026. Документация: Google Search Central — Crawl stats.
