Коли я показую власникам сайтів їхні реальні логи, найпоширеніший інсайт звучить так: «У нас до 35–60% запитів — боти». За даними галузевих звітів і практики BUSINESS SITE, на великому e‑commerce Googlebot здатний формувати до третини всіх хітів на origin, іноді створюючи більше навантаження, ніж реальні користувачі. Це впливає на бюджет обходу (crawl budget), швидкість індексації і навіть на навантаження систем оплати та доставки (наприклад, інтеграцій з ПриватБанк/Монобанк або «Новою Поштою»). Логування запитів Googlebot дає точну картину: як зрозуміти частоту обходу сайту, куди йде crawl budget і де з’являються вузькі місця.

2 min  Логування запитів Googlebot — як аналізувати та зрозуміти частоту обходу сайту

Я розглядаю логи як фінансову звітність seo. На їхній основі зручно рахувати метрики: запитів на добу, унікальних URL, частоту обходу по сторінках, частки 4xx/5xx і середній інтервал між обходами (average time between crawls). Ці показники дозволяють пов’язати технічні події з бізнес-результатами: зростання частки 5xx і 429 закономірно знижує crawl rate і сповільнює індексацію, що відображається на видимості та продажах. Там, де команда BUSINESS SITE впроваджувала системний аналіз логів, швидкість індексації нових карток товару і категорій зростала на 25–70%, а зростання конверсії з органіки вимірювалося вже у виручці.

Для інженерної дисципліни важливо стандартизувати журнал доступу (access log). Мінімально корисний набір полів: timestamp, IP, method, path, status, user-agent, referrer, response_time, X-Forwarded-For. Такий combined log format підходить для розрахунку KPI по SEO і SRE: від метрики запитів на добу до сегментації по user-agent і діагностики впливу CDN на логування. Прозорий лог — це фундамент, на якому будується аналіз crawl budget і коректні рішення щодо індексації.

Логування Googlebot на Nginx і Apache

logirovanie googlebot na nginx i apache h2 img 1  Логування запитів Googlebot — як аналізувати та зрозуміти частоту обходу сайту
Перш ніж рахувати частоту, я завжди прошу команду привести до єдиного формату access.log, додати X-Real-IP/X-Forwarded-For та time-taken (request_time). Це дозволяє враховувати проксі, балансувальники й CDN, а також коректно відокремлювати Googlebot smartphone від десктопа.

Фільтрація Googlebot у конфігурації Nginx

У Nginx я задаю розширений формат і окремий лог для ботів, щоб прискорити подальший аналіз і зменшити шум. Важливо явно логувати X-Forwarded-For і upstream_response_time: вони допомагають з’ясувати, де затримка — на додатку, у базі чи в мережі.

Приклад:


log_format bots_combined '$remote_addr - $host [$time_local] '
                         '"$request" $status $body_bytes_sent '
                         '"$http_referer" "$http_user_agent" '
                         'rt=$request_time urt=$upstream_response_time '
                         'xff="$http_x_forwarded_for"';

map $http_user_agent $is_googlebot {
    default 0;
    ~*(Googlebot|Googlebot-Image|Googlebot-Video) 1;
}

access_log /var/log/nginx/access.log  bots_combined;
access_log /var/log/nginx/googlebot.log bots_combined if=$is_googlebot;

Розділення за пристроями зручно робити додатковою картою: для рядків, що містять “Googlebot/2.1; +http://www.google.com/bot.html” і маркер “Mobile” — це Googlebot smartphone; для десктопа — відсутність “Mobile”. Такий підхід прискорює аналіз, коли ми дивимось, як логування Googlebot смартфонів порівняно з desktop впливає на швидкість переіндексації мобільних сторінок.

Конфігурація access_log і модулів Apache

В Apache я использую CustomLog с явным user-agent и временем обработки. Для виртуальных хостов удобно заводить отдельный лог Googlebot, чтобы не перегружать общий поток:


LogFormat "%h %v %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" rt=%D xff=\"%{X-Forwarded-For}i\"" vhost_combined
CustomLog logs/access_log vhost_combined
SetEnvIfNoCase User-Agent "Googlebot" is_googlebot
CustomLog logs/googlebot_access_log vhost_combined env=is_googlebot
У проді я фіксую конфіги в Git і розгортаю через Ansible або Terraform. Контроль версій конфігурацій сервера заощаджує години налагодження після релізів і спрощує A/B‑експерименти з логуванням.

Журнали: мережі доставки вмісту, балансувальники, зворотні проксі‑сервери

Якщо трафік іде через CDN або балансувальники, важливо зберігати реальний IP і user-agent. Я вмикаю пересилання і парсинг X-Forwarded-For, X-Real-IP, а також кореляцію журналів CDN з origin logs. У кейсі великого рітейлу команда BUSINESS SITE зібрала логи з CDN і Nginx, вирівняла timestamp і розпаковала поля — це дозволило побачити, як кеш CDN маскує частину звернень і як реальні обходи Googlebot розподіляються по кластерах.

Як відфільтрувати запити Googlebot

kak otfil trovat zaprosy googlebot h2 img 2  Логування запитів Googlebot — як аналізувати та зрозуміти частоту обходу сайту

Фільтр за user-agent — лише початок. Підміна user-agent (spoofing) трапляється регулярно, тому я завжди проводжу верифікацію. Порядок такий: reverse DNS lookup IP → перевірка PTR-запису на домени googlebot.com або google.com → пряме резолвування назад в IP → звірка ASN 15169.

Цей конвеєр відрізняє реальний Googlebot від фальшивих сканерів, які копіюють рядок user-agent.

В потоках через проксі та CDN я аналізую X-Forwarded-For і походження підмереж. Якщо джерело сумнівне, запити потрапляють до карантинного індексу — зручно позначати їх прапорцем suspicious_bot. Додатково розділяю Googlebot smartphone і desktop за маркерами в user-agent, що допомагає точніше розуміти, які шаблони сторінок бачить мобільний бот і як він витрачає crawl budget.

Парсинг логів: Logstash і BigQuery

parsing logov logstash i bigquery h2 img 3  Логування запитів Googlebot — як аналізувати та зрозуміти частоту обходу сайту
По нашому досвіді, оптимальна архітектура залежить від обсягу. Для сайтів до кількох мільйонів хітів на добу відмінно працюють GoAccess і batch‑парсинг Python (pandas). Для високонавантажених проєктів команда BUSINESS SITE рекомендує Logstash/Fluentd з вивантаженням в Elasticsearch або потокову доставку в BigQuery, а для довготривалого зберігання – Parquet в S3 або GCS.

Я використовую регулярні вирази для парсингу combined log format і відразу нормалізую поля: дата в UTC, request_time в мілісекундах, host у нижньому регістрі, витяг методу та шляху. Для BigQuery зручно класти дані партіціями за датою (partitioning) і шардирувати за хостом. Такий ETL пайплайн стійкий до пікових навантажень і дає швидкий ad‑hoc аналіз.

Як порахувати частоту обходу Googlebot

kak poschitat chastotu obkhoda googlebot h2 img 4  Логування запитів Googlebot — як аналізувати та зрозуміти частоту обходу сайту
Метрики, які я застосовую в проєктах:

  • Crawl rate: запити/добу від підтвердженого Googlebot (за ASN і PTR).
  • Середній інтервал між обходами сторінки: avg(diff(timestamp) по URL).
  • Унікальні URL/день: кількість унікальних шляхів, які бот відвідав за добу.
  • Статуси: частки 2xx/3xx/4xx/5xx, частка 304, середній TTFB для бота.

Покрокова методика: агрегую за IP і user-agent, залишаю лише підтверджені запити → групую за URL → рахую інтервали між сусідніми хітами → усереднюю. Для CDN і кешу враховую 304 (Не змінено): повторні умовні запити корисно рахувати окремо, щоб розуміти, як працює кешування і ETag/Last‑Modified. Якщо мета — як зрозуміти частоту обходу сайту Googlebot на рівні розділів, я додаю розріз за директоріями /category/, /product/ і типами шаблонів.

Скрипти SQL/BigQuery для аналізу обходу

skripty sql bigquery dlia analiza obkhoda h2 img 5  Логування запитів Googlebot — як аналізувати та зрозуміти частоту обходу сайту
В BigQuery агрегация по user-agent и датам выглядит так:


-- Запитів/добу та унікальних URL від підтвердженого Googlebot
SELECT
  DATE(timestamp) AS d,
  COUNT(1) AS requests,
  COUNT(DISTINCT path) AS unique_urls,
  SUM(CASE WHEN status BETWEEN 500 AND 599 THEN 1 ELSE 0 END) AS err_5xx,
  SUM(CASE WHEN status = 304 THEN 1 ELSE 0 END) AS hits_304
FROM `project.logs.googlebot`
WHERE is_googlebot_verified = TRUE
GROUP BY d
ORDER BY d DESC;

Для расчета интервалов между обходами конкретного URL:


WITH hits AS (
  SELECT path, timestamp
  FROM `project.logs.googlebot`
  WHERE is_googlebot_verified = TRUE
),
seq AS (
  SELECT
    path,
    timestamp,
    LAG(timestamp) OVER (PARTITION BY path ORDER BY timestamp) AS prev_ts
  FROM hits
)
SELECT
  path,
  AVG(TIMESTAMP_DIFF(timestamp, prev_ts, SECOND)) AS avg_interval_sec
FROM seq
WHERE prev_ts IS NOT NULL
GROUP BY path
ORDER BY avg_interval_sec ASC
LIMIT 100;

Швидкий Python‑скрипт на pandas для підрахунку crawl rate і візуалізації рядів:


import pandas as pd

df = pd.read_parquet('googlebot.parquet')
df = df[df['is_googlebot_verified'] == True]
df['date'] = df['timestamp'].dt.date

daily = (df.groupby('date')
           .agg(requests=('path','count'),
                unique_urls=('path','nunique'),
                err_5xx=('status', lambda s: (s.between(500,599)).sum()))
           .reset_index())

# Ковзне середнє для згладжування піків
daily['requests_ma7'] = daily['requests'].rolling(7, min_periods=1).mean()
Для довготривалого зберігання логів рекомендую вивантажувати в Parquet/Avro з компресією і розміщувати на S3 або GCS. Такий формат економить бюджет і пришвидшує сканування великих об’ємів даних.

Кореляція логів із Search Console та API

Crawl stats в інтерфейсі Search Console дають напрямок, а логи показують першоджерело. Я зіставляю: загальний crawl rate, частку відповідей 5xx/429, розподіл за типами файлів, а потім порівнюю з реальними хітами в логах. Розбіжності пояснюють кеш CDN, фільтри за хостами та час агрегації.

Через Search Console API зручно автоматизувати збір даних по індексуванню та кліках, а також використовувати URL Inspection API для вибіркової перевірки статусу сторінок. У проектах BUSINESS SITE ми будуємо в BigQuery джоїни логів з даними GSC, відзначаємо дати правок robots.txt, оновлень sitemap.xml та змін crawl rate settings (там, де параметр доступний обмежено), і дивимося, як це відображається на відвідуваності бота.

Аналіз шаблонів обходу

Для поведінкового аналізу я будую часові ряди і працюю з ковзним середнім і медіаною, потім застосовую моделі ARIMA або Prophet для виявлення сплесків. Типові аномалії: різкі піки в розділах, тривалі паузи по важливих URL, зростання 5xx/429. Якщо бот став частіше відвідувати сторінки фільтрів, це сигнал переглянути параметри URL та внутрішню перелінковку.

Алерти допомагають реагувати вчасно. Я налаштовую пороги у Grafana або Datadog: наприклад, зростання 5xx > 1% від запитів Googlebot за 15 хвилин або стрибок запитів на >50% від 7‑денного середнього. Elasticsearch Watcher та Kibana також підходять для повідомлень у Slack та e‑mail.

Логи та помилки: обхід і індексація

Частота обходу Googlebot чутлива до якості відповідей. Зростання частки 5xx і 503 призводить до зниження швидкості обходу, а 429 підказує боту пригальмувати. У кейсі одного медіасайту ми побачили, як зміна кластера спричинила зростання TTFB і частки 5xx; після оптимізації кешу і бази середній інтервал між обходами топ‑матеріалів скоротився вдвічі.

Soft 404 і довгі ланцюги редиректів витрачають бюджет обходу. Я застосовую аудит редиректів, нормалізацію канонічних посилань (канонічний тег) і акцент на прямі 200‑сторінки. Корисно налаштовувати обмеження швидкості та «ощадливе» дроселювання так, щоб Googlebot отримував стабільні 200 зі швидкістю, яку витримує інфраструктура.

Контроль релізів і моніторинг після деплою через чек‑лісти знижує ризик провалу індексації у пікові години.

бюджет сканування на великих сайтах і рентабельність інвестицій

Тактики, які дають вимірний ефект:

  • Sitemap.xml: пріоритет важливим розділам, усунення 404/301, швидка подача нових карток і категорій.
  • Internal linking і crawlability: короткі клікові дистанції до грошових сторінок (LTV/ROI вищий).
  • Canonical/noindex, видалення дублів і параметрів URL, які не створюють додаткової цінності.
  • Продуктивність: зниження TTFB, передбачувані відповіді 200, рендеринг JavaScript з урахуванням JS rendering/dynamic rendering там, де це окупається.
Для великих e‑commerce та медіа я використовую сегментацію за важливістю, карту патернів сканування і контроль параметрів URL (utm, sort, color тощо).

Вимірювання ROI спирається на дві осі: прискорення індексації пріоритетних сторінок і зменшення навантаження на інфраструктуру. У одному інтернет‑магазині електроніки після декомпозиції sitemap і видалення дублів Googlebot перерозподілив crawl budget на користь категорій і карток із маржинальними SKU, а час виходу в топ за ключовими запитами скоротився на кілька тижнів.

Виявлення ботів, захист журналів, Загальний регламент захисту даних (GDPR)

Виявлення спуфінгу базується на верифікації PTR, перевірці ASN 15169 та аналізі діапазонів IP. Підозрілі джерела зручно позначати, обмежувати швидкість запитів (rate limits) та відстежувати в окремому логу. WAF‑правила і капчі не стосуються користувачів, але вони захищають від фальшивих краулерів, які переодягаються в Googlebot.

Для логів я застосовую політику мінімізації персональних даних, маскування IP та обмеження терміну зберігання (retention policy) на період, який достатній для аналітики. Холодні партиції переношу в S3 або GCS, де вартість зберігання нижча, а доступ – через Presto/Trino або зовнішні таблиці BigQuery. Такий підхід підтримує відповідність GDPR та знижує витрати.

Масштабування логів і аналітики

Архітектура рівня підприємства зазвичай тришарова: гарячий шар (Elasticsearch для оперативної діагностики), теплий (BigQuery/Snowflake для ad‑hoc аналітики) і холодний (S3/GCS у Parquet/Avro). Партиціювання за датою та шардінг за доменом пришвидшують запити й спрощують збереження даних.

У проектах BUSINESS SITE я автоматизую розгортання стеків ELK/EFK і пайплайнів BigQuery через Terraform/Ansible. Контроль версій інфраструктури та декларативні конфіги спрощують перенесення середовищ і прискорюють відновлення після збоїв. Такий фундамент масштабується разом із зростанням бізнесу і витримує сезонні сплески, наприклад розпродажі або високий туристичний сезон.

Кейси й аудит обходу Googlebot

Методика аудиту універсальна: збір → фільтрація → аналіз → гіпотези → A/B змін і моніторинг. Спочатку я підтверджую реальність Googlebot, потім рахую метрики і будую зрізи за типами сторінок, статусами і часом. Після формую гіпотези: де втрачається бюджет сканування (crawl budget), які розділи потребують пріоритету.

Типові знахідки: в e‑commerce бот витрачає бюджет на пагінацію і комбінації параметрів; в SaaS – на динамічні маршрути без цінності; в медіа – на дублі і архіви. Рішення через управління sitemap, внутрішні посилання (internal linking), canonical/noindex і очищення параметрів. Контроль після релізу включає чек‑ліст моніторингу, відкатні фічі‑флаги і швидкі rollback‑процедури, що команда BUSINESS SITE відточила на проєктах фармацевтики, фінансів і онлайн‑ритейлу.

Дашборди в Kibana, Grafana, BigQuery

Для бізнесу важливо бачити картину без SQL. Я збираю дашборди: частота обходів за часом, топ‑URL за кількістю запитів, гарячі точки по 4xx/5xx, розріз за пристроями (Googlebot смартфон/десктоп), TTFB і 304. У Kibana зручно будувати лінійні графіки і heatmap, а потім експортувати у CSV для швидкої комунікації з маркетингом. У Grafana: налаштовувати алерти і пороги, наприклад „>2% 5xx від Googlebot за 10 хвилин“.

Отдельная панель – приклад візуалізації частоти обходів у Kibana: метрика „запитів за 15 хв” із 7‑денним ковзним середнім. Такий графік чудово показує пікові обходи Googlebot і ефект змін у robots.txt або sitemap.xml через кілька годин після деплою.

Поширені запитання та відповіді

  • Як швидко зрозуміти, чи збільшився crawl rate Googlebot і чи варто хвилюватися?
    Я зіставляю добові та годинні метрики в логах, переглядаю вкладку Crawl stats у Search Console і одразу перевіряю частку 5xx/429. Якщо зростання запитів супроводжується стабільними 200 і низьким TTFB, ситуація нормальна; якщо водночас зростають помилки, варто скоригувати ліміти та кеш.
  • Чи достатньо фільтра за user-agent для ідентифікації Googlebot?
    Для надійності рекомендується проводити верифікацію: reverse DNS lookup, PTR до доменів Google, зворотну перевірку IP та звірку ASN 15169. Такий порядок виключає підміну user-agent Googlebot і зберігає чистоту аналітики.
  • Як знизити навантаження від Googlebot без погіршення індексації?
    Допомагають оптимізація sitemap (пріоритет важливим розділам), кешування та стабільні 200, правила robots для непотрібних параметрів і вибірковий noindex для сторінок без цінності. Такий підхід утримує crawl budget на ключових сторінках і підтримує стабільну швидкість індексації.
  • Чим корисна кореляція логів із Search Console?
    Вона показує, як реальні обходи перетворюються на індексацію та кліки, і пояснює розбіжності через CDN, шардінг або затримки. Інтеграція логів із Search Console API для кореляції допомагає швидко перевірити ефект правок robots.txt і sitemap у цифрах.
  • Як організувати зберігання логів економно й безпечно?
    Рекомендую чітку retention policy: «гарячі» дані в Elasticsearch 7–14 днів, «теплі» в BigQuery 3–6 місяців, «холодні» в S3/GCS до року у форматі Parquet.

Анонімізація IP і обмеження доступу підтримують відповідність GDPR і знижують ризики.

Висновок, практичні кроки та заклик до дії

Системне логування запитів Googlebot — це контроль crawl budget і передбачувана індексація. З мого досвіду, компанії, які бачать логи, швидше знаходять вузькі місця, точніше планують пріоритети та отримують вимірюваний ROI від SEO: швидше спрямовують трафік на прибуткові сторінки та економлять ресурси інфраструктури.

План на 30/60/90 днів:

  1. 30 днів: стандартизувати access log (timestamp, IP, path, status, user-agent, response_time, X‑Forwarded‑For), увімкнути окремий лог для ботів, зібрати першу зведену статистику метрик і базовий дашборд.
  2. 60 днів: впровадити верифікацію Googlebot (PTR/ASN), налаштувати ETL в BigQuery або Elasticsearch, побудувати алерти по 5xx/429 та аномаліям, провести аудит robots.txt і sitemap.xml.
  3. 90 днів: оптимізувати структуру перелінковки та параметри URL, впровадити контроль релізів і моніторинг після деплою, оцінити ROI оптимізації crawl budget на основі індексації та продажів.

Команда BUSINESS SITE підготувала чек‑ліст, шаблони конфігурацій та стартові скрипти для аналізу. Запрошую на розмовний аудит: розберемо ваші логи, підтвердимо Googlebot, вибудуємо пріоритети та зберемо зрозумілий дашборд для керівника і маркетолога.

Додаткові матеріали

  • Готові шаблони:
    • Формат логів Nginx & Apache з request_time, upstream_response_time, X‑Forwarded‑For.
    • BigQuery схеми для журналів доступу (access log) Googlebot з партиціюванням.
    • Приклад Python‑пайплайну на pandas для розрахунку crawl rate та експорту в Parquet/Avro.
  • Рекомендації щодо зберігання:
    • S3/GCS як холодний шар з компресією ZSTD/Snappy; lifecycle‑політики для автоматичного переведення в Glacier/Archive.
    • Політика зберігання: 14 днів — гарячі, 90 днів — теплі, 6–12 місяців — холодні — з урахуванням вартості зберігання логів і завдань аналітики.
  • Інструменти:
    • Logstash/Fluentd для стрімінгу, GoAccess для швидкого перегляду, стек Elasticsearch + Kibana для візуалізації, Grafana і Datadog для алертів.
    • Screaming Frog і Sitebulb для комбінованого аналізу разом із логами, google search console API для автоматизації звітів.
    • Сховища: BigQuery для логів, S3, GCS; підтримка парсингу великих логів у Parquet/Avro.
За нашими спостереженнями, коли бізнес починає дивитися на логи як на управлінський інструмент, розмова про SEO і індексування стає предметною та вимірною. Рішення, яке ми розробили в BUSINESS SITE, об’єднує SRE‑практики та SEO‑метрики, щоб власники сайтів — від ритейлу до фінтеху — бачили, на що саме витрачається бюджет обходу і як перетворити його на продажі.