Главная Блог Логи сервера для SEO: как анализировать
Техническое SEO 22 февраля 2026 6 мин чтения 57

Анализ логов сервера для SEO: как найти проблемы с краулингом, ошибки робота и потери краулинг-бюджета

Содержание

Яндекс.Вебмастер — удобный инструмент, но он показывает лишь часть картины. Данные в нём агрегированы, задержаны на несколько дней и не дают полной информации о поведении робота. Логи веб-сервера — это сырой, необработанный поток данных о каждом запросе к вашему сайту. Здесь видно всё: как часто приходит Яндекс.Бот, какие страницы запрашивает, с какими кодами ответа уходит, сколько времени занимает обработка запроса.

В этой статье разберём, как читать и анализировать логи сервера с точки зрения SEO.

Что такое access log и где его найти

Access log (журнал доступа) — файл, в котором веб-сервер записывает информацию о каждом HTTP-запросе. Стандартное расположение:

  • Apache: /var/log/apache2/access.log или /var/log/httpd/access_log
  • Nginx: /var/log/nginx/access.log
  • Определить точное расположение: посмотрите в конфиге сервера директиву access_log.

На хостингах логи обычно доступны в панели управления (cPanel, ISPmanager) или по SFTP в папке logs/.

Формат строки access log

Стандартная строка access log выглядит так:

77.88.5.224 - - [22/Feb/2026:10:15:32 +0300] "GET /catalog/phones/ HTTP/1.1" 200 45231 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"

Разберём по частям:

  • 77.88.5.224 — IP-адрес робота.
  • [22/Feb/2026:10:15:32 +0300] — дата и время запроса.
  • GET /catalog/phones/ HTTP/1.1 — метод, URL, версия протокола.
  • 200 — HTTP-код ответа.
  • 45231 — размер ответа в байтах.
  • "-" — реферер (откуда пришёл запрос).
  • "Mozilla/5.0 ... YandexBot/3.0 ..." — User-Agent.

IP-адреса Яндекс.Бота

Яндекс не использует один фиксированный IP. Диапазоны IP-адресов публикуются на странице Яндекса для вебмастеров. Основные диапазоны YandexBot: 77.88.x.x, 5.255.x.x, 37.9.x.x, 84.201.x.x.

Надёжнее фильтровать по User-Agent, содержащему YandexBot.

Фильтрация запросов от YandexBot

Через командную строку (bash)

Отфильтровать все запросы от YandexBot:

grep "YandexBot" /var/log/nginx/access.log > yandex_bot.log

Посмотреть количество запросов за день:

grep "YandexBot" /var/log/nginx/access.log | grep "22/Feb/2026" | wc -l

Топ-20 самых запрашиваемых URL:

grep "YandexBot" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20

Статистика по HTTP-кодам:

grep "YandexBot" /var/log/nginx/access.log | awk '{print $9}' | sort | uniq -c | sort -rn

Медленные страницы (если время ответа логируется):

grep "YandexBot" /var/log/nginx/access.log | awk '{if($NF > 2000) print $0}' | sort -k$NF -rn | head -20

Что искать в логах: ключевые метрики

1. Общая активность краулера

Подсчитайте количество запросов от YandexBot за день. Сравните с несколькими предыдущими неделями. Резкое падение активности может означать:

  • Проблемы с доступностью сервера.
  • Изменения в robots.txt, случайно заблокировавшие бота.
  • Снижение авторитетности сайта в глазах Яндекса.
  • Ошибки сервера (5xx), из-за которых Яндекс решил снизить частоту краулинга.

2. Распределение HTTP-кодов

Здоровое распределение кодов для SEO:

  • 200 OK — основная масса, 90%+.
  • 301/302 — редиректы, должны быть минимизированы.
  • 404 — страницы не найдены. Редкие 404 допустимы, массовые — проблема.
  • 5xx — ошибки сервера. Должны стремиться к нулю.

Если 10–20% запросов от YandexBot возвращают 5xx — Яндекс снизит частоту краулинга. Если продолжатся — может временно исключить сайт из активного краулинга.

3. URL с высокой частотой запросов

Посмотрите, какие страницы Яндекс запрашивает чаще всего. Это подскажет:

  • Что Яндекс считает важным на вашем сайте.
  • Нет ли «ловушек» (например, фильтры генерируют бесконечные URL).
  • Правильно ли работают редиректы.

Если в топе запрашиваемых URL — страницы с GET-параметрами (?sort=price&order=asc), значит робот тратит бюджет на мусорные URL.

4. Страницы, которые робот НЕ запрашивает

Это обнаружить сложнее — нужно сравнить список всех URL сайта (из sitemap) с URL из логов. Страницы, которых нет в логах — те, что робот не обнаружил или не считает нужным обходить.

Возможные причины:

  • Нет внутренних ссылок на страницу.
  • Страница закрыта в robots.txt (возможно, случайно).
  • Плохая структура внутренней перелинковки — робот «не добирается» до глубоко вложенных страниц.

5. Скорость ответа сервера

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

Nginx: время в секундах записывается в переменную $request_time. Добавьте её в формат логирования:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" $request_time';

6. Цепочки редиректов

Найдите URL, которые возвращают 301 или 302 боту. Особенно опасны цепочки редиректов (A → B → C → D): они тратят краулинговый бюджет и замедляют передачу веса ссылок.

grep "YandexBot" /var/log/nginx/access.log | awk '{print $9, $7}' | grep "^301\|^302" | head -50

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

GoAccess

Быстрый и удобный анализатор логов с веб-интерфейсом и терминальным режимом:

goaccess /var/log/nginx/access.log --log-format=COMBINED

Показывает в реальном времени: топ URL, распределение статусов, User-Agent, скорость и многое другое. Можно экспортировать в HTML-отчёт.

Screaming Frog Log File Analyser

Платный десктопный инструмент специально для SEO-анализа логов. Удобно:

  • Объединять данные из логов и краулинга сайта.
  • Находить URL в логах, которых нет в sitemap.
  • Видеть динамику краулинга по времени.

ClickFlow

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

Python-скрипты

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

import pandas as pd
import re

def parse_log_line(line):
    pattern = r'(\S+) \S+ \S+ \[([^\]]+)\] "(\S+) (\S+) \S+" (\d+) (\d+) "([^"]*)" "([^"]*)"'
    match = re.match(pattern, line)
    if match:
        return {
            'ip': match.group(1),
            'time': match.group(2),
            'method': match.group(3),
            'url': match.group(4),
            'status': int(match.group(5)),
            'size': int(match.group(6)),
            'referer': match.group(7),
            'user_agent': match.group(8)
        }

with open('access.log') as f:
    lines = f.readlines()

records = [parse_log_line(l) for l in lines if 'YandexBot' in l]
df = pd.DataFrame([r for r in records if r])

print("Статусы ответов:")
print(df['status'].value_counts())

print("\nТоп-20 URL:")
print(df['url'].value_counts().head(20))

Практический план работы с логами

Еженедельно:

  • Проверить объём краулинга (количество запросов YandexBot в день).
  • Проверить процент ошибок 5xx.
  • Посмотреть на топ-30 самых запрашиваемых URL — нет ли мусора.

Ежемесячно:

  • Сравнить URL в логах с sitemap — найти пропущенные страницы.
  • Проверить цепочки редиректов.
  • Проанализировать скорость ответа сервера по URL.
  • Найти страницы с массовыми 404 — настроить редиректы или убрать ссылки.

После любых крупных изменений:

  • После изменений в robots.txt — убедиться, что бот не заблокирован.
  • После перезапуска сервера — проверить, не появились ли ошибки.
  • После редизайна или миграции — убедиться, что все редиректы работают корректно.

Анализ логов сервера — это SEO-практика, которую применяют единицы специалистов, хотя она даёт уникальный инсайт в поведение краулера. Потратив несколько часов на настройку процесса, вы получите инструмент, который регулярно помогает находить и устранять проблемы до того, как они скажутся на позициях.

Попробуйте ClickFlow бесплатно

Рост позиций в Яндексе через поведенческие факторы. Первые результаты через 2 часа.

НАЧАТЬ БЕСПЛАТНО

Читайте также