Docs
Пошук документації...⌘K

Cloudflare Logpush

Cloudflare Logpush автоматично надсилає журнали HTTP-запитів до Ahrefs. Це рекомендований метод для сайтів із великим трафіком, але він потребує плану Cloudflare Enterprise.

Передумови

  • План Cloudflare Enterprise для зони, яку ви хочете відстежувати.
  • Токен Cloudflare API з такими дозволами:
    • Зона → Zone → Read
    • Zone → Logs → Edit
  • Лише для ручного налаштування: локально встановлений jq, який команди налаштування використовують для читання й оновлення конфігурації Cloudflare.

Отримання API-токена Cloudflare

Переконайтеся, що ви ввійшли до Cloudflare Dashboard з правильним обліковим записом. Потім перейдіть на сторінку https://dash.cloudflare.com/profile/api-tokens, знайдіть і натисніть кнопку Create Token у верхньому правому куті:

Створити токен

Тепер перейдіть до процесу Створення власного токена:

Створити власний токен

Заповніть таку інформацію:

  • Назва API-токена: ahrefs-bot-analytics
  • Надайте такі дозволи:
    • Zone / Logs / Edit, щоб ми могли налаштувати завдання Logpush для надсилання журналів до Ahrefs Bot Analytics
    • Zone / Zone / Read — щоб ми могли знайти зону для налаштування
  • Zone Resources можна встановити як Include / All Zones або вибрати Zone, що відповідає домену вашого сайту.
Налаштування токена

Тепер натисніть кнопку Continue to summary, підсумок має виглядати так:

Підсумок токена

Тепер натисніть кнопку Create Token і скопіюйте згенерований токен у буфер обміну, щоб використати його на наступних кроках.

Додаткову інформацію дивіться в документації Cloudflare: як створити API-токен.

Автоматичне налаштування

  1. В Ahrefs перейдіть до Налаштування проєкту → Bot Analytics.
  2. Виберіть Cloudflare Logpush як метод.
  3. Вставте свій токен Cloudflare API і натисніть Підключити.

Ahrefs використає ваш токен, щоб:

  1. Знайти зону, що відповідає домену вашого проєкту.
  2. Перевірити наявні завдання Logpush.
  3. Створити нове завдання з надсилання журналів до Ahrefs.
  4. Додайте до зони правило для користувацького поля журналу, щоб заголовки перевірки ботів (signature, signature-input і signature-agent) включалися до журналів. Наявні правила у вашій зоні буде збережено.

info

Токен використовується один раз і не зберігається.

Ручне налаштування

Якщо ви не хочете надавати токен API, ви можете налаштувати завдання Logpush вручну через Cloudflare API.

Крок 1 — отримайте свій API-токен

  1. Перейдіть до Cloudflare Dashboard і виберіть домен вашого вебсайту.

  2. Клацніть на «Отримати API-токен» і створіть токен із такими дозволами:

    • Зона → Zone → Read
    • Zone → Logs → Edit

    Детальні інструкції див. у розділі Отримання API-токена.

info

Вам не потрібно шукати ідентифікатор своєї зони. Ці команди знаходять зону за вашим доменом, використовуючи дозвіл Zone → Zone → Read.

Крок 2 — Створіть завдання Logpush

Вставте свій API-токен у перший блок, а потім запускайте в терміналі кожен блок нижче по черзі, перевіряючи, щоб кожен завершувався без помилки. Разом вони знаходять вашу зону, створюють завдання Logpush і додають правило для користувацького поля журналу, описане в розділі Автоматичне налаштування. Точні команди, уже заповнені даними вашого проєкту, можна знайти в розділі Налаштування проєкту → Аналітика ботів → Налаштувати вручну.

export CF_TOKEN="<your Cloudflare API token>"
BASE="https://api.cloudflare.com/client/v4"

Find the Cloudflare zone for yourwebsite.com

ZONE_ID=$(curl -s --fail-with-body "$BASE/zones?name=yourwebsite.com&status=active&match=all" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -r '.result[0].id // error("no active Cloudflare zone found for yourwebsite.com")')

echo "ZONE_ID=$ZONE_ID"

Remove the existing Logpush job if present

OLD_JOB_ID=$(curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -r '([(.result // [])[] | select(.name == "ahrefs-web-analytics-http-requests")])[0].id // ""')

echo "OLD_JOB_ID=$OLD_JOB_ID"
if [ -n "$OLD_JOB_ID" ]; then
  curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs/$OLD_JOB_ID" -X DELETE \
    -H "Authorization: Bearer $CF_TOKEN"
fi

Create the Logpush job

curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs" -X POST \
  -H "Authorization: Bearer $CF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary '{"name":"ahrefs-web-analytics-http-requests","destination_conf":"https://analytics.ahrefs.com/api/cf_logpush/http_requests?header_x-ahrefs-web-analytics-property=YOUR_PROPERTY_KEY","dataset":"http_requests","frequency":"high","filter":"{\"where\":{\"or\":[{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"yourwebsite.com\"},{\"key\":\"ClientRequestHost\",\"operator\":\"endsWith\",\"value\":\".yourwebsite.com\"}]}}","output_options":{"field_names":["ClientIP","ClientRequestMethod","ClientRequestHost","ClientRequestProtocol","ClientRequestScheme","ClientRequestURI","ClientRequestPath","ClientRequestUserAgent","ClientRequestReferer","EdgeStartTimestamp","EdgeEndTimestamp","EdgeResponseStatus","EdgeResponseBytes","EdgeResponseContentType","EdgeTimeToFirstByteMs","ClientCountry","ClientCity","ClientASN","ClientDeviceType","ClientRegionCode","BotScore","BotScoreSrc","BotTags","VerifiedBotCategory","RayID","RequestHeaders"],"timestamp_format":"unixnano"},"enabled":true}'

Add the custom log fields rule

RULES=$(curl -s --fail-with-body "$BASE/zones/$ZONE_ID/rulesets/phases/http_log_custom_fields/entrypoint" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -c '.result.rules // []')

echo "RULES=$RULES"
BODY=$(jq -nc --argjson rules "$RULES" \
  '{rules: ([$rules[] | select(.description != "ahrefs-web-analytics-web-bot-auth-signature")] + [{"action":"log_custom_field","expression":"true","description":"ahrefs-web-analytics-web-bot-auth-signature","action_parameters":{"request_fields":[{"name":"signature"},{"name":"signature-input"},{"name":"signature-agent"}]}}])}')

curl -s --fail-with-body "$BASE/zones/$ZONE_ID/rulesets/phases/http_log_custom_fields/entrypoint" -X PUT \
  -H "Authorization: Bearer $CF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary "$BODY"

info

Поля BotScore, BotScoreSrc і BotTags доступні лише за наявності підписки на Cloudflare Bot Management. Однак Bot Analytics працює і без них, хоча їх додавання покращує класифікацію ботів. Якщо для вашої зони не підключено Bot Management, вилучіть ці три поля з field_names перед створенням завдання.

warning

URL destination_conf і ключ властивості унікальні для вашого проєкту. Скопіюйте точні команди зі сторінки Налаштування проєкту → Аналітика ботів, щоб використати правильні значення.

Крок 3 — Перевірте підключення

Після створення завдання поверніться в Ahrefs до Налаштування проєкту → Аналітика ботів і натисніть Перевірити статус, щоб переконатися, що дані надходять.