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

Перш ніж рахувати частоту, я завжди прошу команду привести до єдиного формату access.log, додати X-Real-IP/X-Forwarded-For та time-taken (request_time). Це дозволяє враховувати проксі, балансувальники й CDN, а також коректно відокремлювати Googlebot smartphone від десктопа.
Фільтрація Googlebot у конфігурації Nginx
Приклад:
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
Журнали: мережі доставки вмісту, балансувальники, зворотні проксі‑сервери
Як відфільтрувати запити Googlebot

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

По нашому досвіді, оптимальна архітектура залежить від обсягу. Для сайтів до кількох мільйонів хітів на добу відмінно працюють GoAccess і batch‑парсинг Python (pandas). Для високонавантажених проєктів команда BUSINESS SITE рекомендує Logstash/Fluentd з вивантаженням в Elasticsearch або потокову доставку в BigQuery, а для довготривалого зберігання – Parquet в S3 або GCS.
Як порахувати частоту обходу 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 для аналізу обходу

В 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()
Кореляція логів із Search Console та API
Через 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; після оптимізації кешу і бази середній інтервал між обходами топ‑матеріалів скоротився вдвічі.
Контроль релізів і моніторинг після деплою через чек‑лісти знижує ризик провалу індексації у пікові години.
бюджет сканування на великих сайтах і рентабельність інвестицій
Тактики, які дають вимірний ефект:
- Sitemap.xml: пріоритет важливим розділам, усунення 404/301, швидка подача нових карток і категорій.
- Internal linking і crawlability: короткі клікові дистанції до грошових сторінок (LTV/ROI вищий).
- Canonical/noindex, видалення дублів і параметрів URL, які не створюють додаткової цінності.
- Продуктивність: зниження TTFB, передбачувані відповіді 200, рендеринг JavaScript з урахуванням JS rendering/dynamic rendering там, де це окупається.
Вимірювання ROI спирається на дві осі: прискорення індексації пріоритетних сторінок і зменшення навантаження на інфраструктуру. У одному інтернет‑магазині електроніки після декомпозиції sitemap і видалення дублів Googlebot перерозподілив crawl budget на користь категорій і карток із маржинальними SKU, а час виходу в топ за ключовими запитами скоротився на кілька тижнів.
Виявлення ботів, захист журналів, Загальний регламент захисту даних (GDPR)
Виявлення спуфінгу базується на верифікації PTR, перевірці ASN 15169 та аналізі діапазонів IP. Підозрілі джерела зручно позначати, обмежувати швидкість запитів (rate limits) та відстежувати в окремому логу. WAF‑правила і капчі не стосуються користувачів, але вони захищають від фальшивих краулерів, які переодягаються в Googlebot.
Масштабування логів і аналітики
Архітектура рівня підприємства зазвичай тришарова: гарячий шар (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 днів:
- 30 днів: стандартизувати access log (timestamp, IP, path, status, user-agent, response_time, X‑Forwarded‑For), увімкнути окремий лог для ботів, зібрати першу зведену статистику метрик і базовий дашборд.
- 60 днів: впровадити верифікацію Googlebot (PTR/ASN), налаштувати ETL в BigQuery або Elasticsearch, побудувати алерти по 5xx/429 та аномаліям, провести аудит robots.txt і sitemap.xml.
- 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.











